Ruby动态创建数组

时间:2016-07-27 19:50:05

标签: arrays ruby string

我有各种测试条件,并根据特定输入我想创建什么是我可以使用的api正文请求。我想要构建请求的一部分,并根据该输入返回特定数量的附加块。

以下方法目前有两个“块”硬编码:

def info(*value, *type)

#request build logic here

  return {
      'individual' => {
          'title' => 'Mr',
          'firstName' => 'Joe',
          'middleName' => '',
          'lastName' => 'Bloggs',
          'birthDate' => '2016-01-01',
          'incomeAmount' => 50,
          'emailAddress' => 'clear@gmail.com',

      },
      'blocks' => [
          {
              'value' => 400,
              'type' => 'car'
          },
          {
              'value' => 400,
              'type' => 'jug'
          }
      ]
  }
end 

所以基于输入我想创建我的'块',例如value = 100,type = house,所以块就是上面格式的那个值。

有了这个想法,如果我通过它10个值/ 10个类型然后我返回所有10.我试图调用另一个构建我的响应的方法,但我很难根据输入重复它< / p>

def block(value,type)
  "{
      'value' => #{value.to_i},
      'type' => #{type}
  },"
end

2 个答案:

答案 0 :(得分:0)

您正在返回哈希值,以插入更大的哈希值,因此没有理由尝试生成包含序列化哈希的字符串。只需返回一个哈希值。

def block(value,type)
  {
      'value' => value.to_i,
      'type' => type
  }
end

如果要将值和类型数组转换为一系列哈希值,则应在数组上使用map

答案 1 :(得分:0)

假设您传递了几个值和类型数组,可以使用zip方法对齐它们:

def info(values, types)
  blocks = values.zip(types).map do |value, type|
    {
      'value' => value.to_i,
      'type' => type
    }
  end

  {
    'individual' => {
      'title' => 'Mr',
      'firstName' => 'Joe',
      'middleName' => '',
      'lastName' => 'Bloggs',
      'birthDate' => '2016-01-01',
      'incomeAmount' => 50,
      'emailAddress' => 'clear@gmail.com'

    },
    'blocks' => blocks
  }
end