Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么可以';我是否检索方法的可选参数?_Ruby On Rails_Ruby - Fatal编程技术网

Ruby on rails 为什么可以';我是否检索方法的可选参数?

Ruby on rails 为什么可以';我是否检索方法的可选参数?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我写了这个简单的方法: def has_kontakt?(*depa) return JSON.parse(self.kontakte).include?(*depa.to_s) end 您可以看到我将depa定义为可选参数。 不知何故,无法使用include?(*depa.to_s)检索参数 以前我有: def has_kontakt?(depa) return JSON.parse(self.kontakte).include?(depa.to_s) end 一切都很

我写了这个简单的方法:

 def has_kontakt?(*depa)
   return JSON.parse(self.kontakte).include?(*depa.to_s)
 end
您可以看到我将
depa
定义为可选参数。 不知何故,无法使用
include?(*depa.to_s)
检索参数

以前我有:

 def has_kontakt?(depa)
   return JSON.parse(self.kontakte).include?(depa.to_s)
 end

一切都很顺利。我做错了什么?

这不是定义可选参数的方式。*是一个splat操作符()。您需要一个可选参数,它看起来更像这样:

def has_kontakt?(depa=nil)
  if depa.nil?
    # no argument was passed in
  else
    # depa was specified
  end
end
def has_kontakt?(depa="")
   return JSON.parse(self.kontakte).include?(depa.to_s)
end

顺便说一句,您不需要指定
return
。Ruby会自动返回最后计算的值。

这不是定义可选参数的方式。*是一个splat操作符()。您需要一个可选参数,它看起来更像这样:

def has_kontakt?(depa=nil)
  if depa.nil?
    # no argument was passed in
  else
    # depa was specified
  end
end
def has_kontakt?(depa="")
   return JSON.parse(self.kontakte).include?(depa.to_s)
end

顺便说一句,您不需要指定
return
。Ruby会自动返回最后计算的值。

这不是定义可选参数的方式。*是一个splat操作符()。您需要一个可选参数,它看起来更像这样:

def has_kontakt?(depa=nil)
  if depa.nil?
    # no argument was passed in
  else
    # depa was specified
  end
end
def has_kontakt?(depa="")
   return JSON.parse(self.kontakte).include?(depa.to_s)
end

顺便说一句,您不需要指定
return
。Ruby会自动返回最后计算的值。

这不是定义可选参数的方式。*是一个splat操作符()。您需要一个可选参数,它看起来更像这样:

def has_kontakt?(depa=nil)
  if depa.nil?
    # no argument was passed in
  else
    # depa was specified
  end
end
def has_kontakt?(depa="")
   return JSON.parse(self.kontakte).include?(depa.to_s)
end

顺便说一句,您不需要指定
return
。Ruby会自动返回最后计算的值。

在参数前添加星号不会将其标记为可选。相反,它允许您传递任意数量的参数,然后将这些参数作为数组传递给方法:

def method(*args)
  puts args.inspect
end

method :foo
# => [:foo]

method foo, :bar, :baz
# => [:foo, :bar, :baz]
正因为如此,
*depa.to\s
并没有真正的用处。我猜,您可能想要通过添加如下默认值来定义可选参数:

def has_kontakt?(depa=nil)
  if depa.nil?
    # no argument was passed in
  else
    # depa was specified
  end
end
def has_kontakt?(depa="")
   return JSON.parse(self.kontakte).include?(depa.to_s)
end
或者您希望正确处理阵列(取决于您实际想要实现的目标)


在参数前添加星号不会将其标记为可选。相反,它允许您传递任意数量的参数,然后将这些参数作为数组传递给方法:

def method(*args)
  puts args.inspect
end

method :foo
# => [:foo]

method foo, :bar, :baz
# => [:foo, :bar, :baz]
正因为如此,
*depa.to\s
并没有真正的用处。我猜,您可能想要通过添加如下默认值来定义可选参数:

def has_kontakt?(depa=nil)
  if depa.nil?
    # no argument was passed in
  else
    # depa was specified
  end
end
def has_kontakt?(depa="")
   return JSON.parse(self.kontakte).include?(depa.to_s)
end
或者您希望正确处理阵列(取决于您实际想要实现的目标)


在参数前添加星号不会将其标记为可选。相反,它允许您传递任意数量的参数,然后将这些参数作为数组传递给方法:

def method(*args)
  puts args.inspect
end

method :foo
# => [:foo]

method foo, :bar, :baz
# => [:foo, :bar, :baz]
正因为如此,
*depa.to\s
并没有真正的用处。我猜,您可能想要通过添加如下默认值来定义可选参数:

def has_kontakt?(depa=nil)
  if depa.nil?
    # no argument was passed in
  else
    # depa was specified
  end
end
def has_kontakt?(depa="")
   return JSON.parse(self.kontakte).include?(depa.to_s)
end
或者您希望正确处理阵列(取决于您实际想要实现的目标)


在参数前添加星号不会将其标记为可选。相反,它允许您传递任意数量的参数,然后将这些参数作为数组传递给方法:

def method(*args)
  puts args.inspect
end

method :foo
# => [:foo]

method foo, :bar, :baz
# => [:foo, :bar, :baz]
正因为如此,
*depa.to\s
并没有真正的用处。我猜,您可能想要通过添加如下默认值来定义可选参数:

def has_kontakt?(depa=nil)
  if depa.nil?
    # no argument was passed in
  else
    # depa was specified
  end
end
def has_kontakt?(depa="")
   return JSON.parse(self.kontakte).include?(depa.to_s)
end
或者您希望正确处理阵列(取决于您实际想要实现的目标)


*depa
不是可选参数。这是一场争论。这是有区别的。你能给我写一个答案吗,我如何定义一个可选的参数?谢谢你,我能正确地阅读并理解这篇文章…:)
depa.to_s
可能不是您想要的
*depa
。将数组(
*depa
)转换为字符串确实会降低
include?
找到匹配项的可能性。
*depa
不是可选参数。这是一场争论。这是有区别的。你能给我写一个答案吗,我如何定义一个可选的参数?谢谢你,我能正确地阅读并理解这篇文章…:)
depa.to_s
可能不是您想要的
*depa
。将数组(
*depa
)转换为字符串确实会降低
include?
找到匹配项的可能性。
*depa
不是可选参数。这是一场争论。这是有区别的。你能给我写一个答案吗,我如何定义一个可选的参数?谢谢你,我能正确地阅读并理解这篇文章…:)
depa.to_s
可能不是您想要的
*depa
。将数组(
*depa
)转换为字符串确实会降低
include?
找到匹配项的可能性。
*depa
不是可选参数。这是一场争论。这是有区别的。你能给我写一个答案吗,我如何定义一个可选的参数?谢谢你,我能正确地阅读并理解这篇文章…:)
depa.to_s
可能不是您想要的
*depa
。将一个数组(
*depa
)转换为一个字符串将真正降低
include?
找到匹配项的可能性。