2

join用于将数组转换为字符串。下面,*names被加入,被输出。这是否意味着参数是数组?

def introduction( age, gender, *names)
  "Meet #{names.join(" ")}, who's #{age} and #{gender}"
end

puts introduction(28, "Male", "Sidu", "Ponnappa", "Chonira")

这输出:

认识 28 岁的男性 Sidu Ponnappa Chonira

4

2 回答 2

2

当你传递*namesintroductionthen 你会得到一个names. 星号 ( *) 表示它是可变长度的。joinRuby中的类成员将数组的每个成员转换为字符串(如果它们是可转换的),并使用参数 to作为分隔符Array将它们连接在一起。join

请注意,方法的所有参数一起不会形成数组。也就是说,age, gender,*names一起不作为数组传入,而只是方法的单独参数。

于 2013-10-13T01:08:35.127 回答
2

这是显示 *args 最终结果的代码,并带有可选参数、贪婪参数和必需参数的示例。

def something(name = 'Joe', *args, last_name)
  puts name, args, last_name
  puts args.inspect
  puts "Last name is #{last_name}"
end

something "one", 'Smith'

# >> one
# >> Smith
# >> []
# >> Last name is Smith

* (splat) 运算符表示接受 0 个或多个参数,它不需要是列表中的最后一个。现在有了命名参数,如果我没记错的话,考虑到命名参数需要放在最后,如果它会的话,那将是令人惊讶的。

0 个或多个参数将存储在一个数组中。

您可以使用上面的代码开始进行更改并进行探索。

于 2013-10-13T01:19:29.853 回答