0

我正在尝试解压缩一些变量,然后在传递给 def 时将它们加入,这就是我正在尝试的,但它出错了。

class Try
  def test
    @name = "bob"
    @password = "password"
    self.send(@name,@password)
  end

  def send(*data)
    print data #prints orginal data
    print ":".join(data) #errors
  end
end

有什么我做错了吗?

4

2 回答 2

4

在这里,您应该使用以下方法执行以下操作Array#join

class Try
        def test
            @name = "bob"
            @password = "password"
            self.send(@name,@password)
        end
        def send(*data)
            print data.join(":")
        end
end
Try.new.test
# >> bob:password

join用于 Array 实例。它不是 String 实例方法。见下文:

Array.instance_methods.include?(:join) # => true
String.instance_methods.include?(:join) # => false
于 2013-09-19T03:27:57.707 回答
2

join我想您可能将 Python 字符串的内置函数与joinRubyArray类的方法混淆了。

help(":".join)Python 中:

返回一个字符串,它是可迭代的字符串的串联。元素之间的分隔符是 S。

并且来自Ruby 的文档Array

返回通过将数组的每个元素转换为字符串创建的字符串,由给定的分隔符分隔。

如您所见,Pythonjoin内置函数将给定列表参数的字符串连接起来,而在 Ruby 中,该Array#join方法会将元素转换为其String等效项,然后使用分隔符参数连接它们。

希望这能消除 Pythonjoin和 Ruby之间的混淆Array#join

于 2013-09-19T04:04:02.510 回答