如何在 rails 控制台中编写一个接受字符数组的函数?
How do I write a function in rails console that takes in an array of characters?
我知道在编写一个接受字符串的函数时,它看起来像:
def function("string")
但是我该如何编写一个接受数组的代码呢?我应该先定义一个空数组吗? s=[] 然后写函数的时候直接用s作为输入?
请试试这个。
#here argument name can be anything. It not compulsory to use array as argument name, it can be anything like `string`, `xyz` etc
def function(array)
p array
end
function([1,2,3,4,5])
你可以这样做
def my_function(arr=[], s)
puts arr.inspect
puts s.inspect
end
你可以用
调用方法
my_function([1,3,4], "string")
这真是一道Ruby比Rails的题。 Ruby 是一种动态类型语言,在方法定义中,这意味着您不声明参数类型:
def add_three ( x, y , z)
x + y + z
end
add_three(1, 2, 3) # 6
add_three('a', 'b', 'c') # 'abc'
add_three([2], [3], [4], # [2, 3, 4]
add_three(Date.new(2017,3,4), 1, 1), # new date 2017.3.6
重要的是 x 有一个接受 y 的方法 +
,x + y
的结果有一个接受 z 的方法 +
。这称为鸭子打字。这里重要的不是对象是哪个class,而是它可以响应什么消息。
由于 Ruby 是动态语言并且它支持 Duck Typing 我们从不声明变量或方法参数的数据类型。所以你可以在任何方法中传递数组,ruby 只关心你可以在那个参数上使用的方法,它是它的一个对象。因此,要确保您使用的数组方法只会在数组上执行,您可以这样做:
def doSomething(value)
if (value.is_a?(Array))
value.any_array_method # For eg: value.include?('a')
else
raise "Expected array value"
end
end
你可以这样称呼它:
doSomething(['a', 'b', 'c'])
如果你用数组以外的任何其他参数调用它,那么它将给出:
RuntimeError: Expected array value
您也可以传递错误消息,而不是引发取决于您的异常。
希望对您有所帮助。
我知道在编写一个接受字符串的函数时,它看起来像:
def function("string")
但是我该如何编写一个接受数组的代码呢?我应该先定义一个空数组吗? s=[] 然后写函数的时候直接用s作为输入?
请试试这个。
#here argument name can be anything. It not compulsory to use array as argument name, it can be anything like `string`, `xyz` etc
def function(array)
p array
end
function([1,2,3,4,5])
你可以这样做
def my_function(arr=[], s)
puts arr.inspect
puts s.inspect
end
你可以用
调用方法my_function([1,3,4], "string")
这真是一道Ruby比Rails的题。 Ruby 是一种动态类型语言,在方法定义中,这意味着您不声明参数类型:
def add_three ( x, y , z)
x + y + z
end
add_three(1, 2, 3) # 6
add_three('a', 'b', 'c') # 'abc'
add_three([2], [3], [4], # [2, 3, 4]
add_three(Date.new(2017,3,4), 1, 1), # new date 2017.3.6
重要的是 x 有一个接受 y 的方法 +
,x + y
的结果有一个接受 z 的方法 +
。这称为鸭子打字。这里重要的不是对象是哪个class,而是它可以响应什么消息。
由于 Ruby 是动态语言并且它支持 Duck Typing 我们从不声明变量或方法参数的数据类型。所以你可以在任何方法中传递数组,ruby 只关心你可以在那个参数上使用的方法,它是它的一个对象。因此,要确保您使用的数组方法只会在数组上执行,您可以这样做:
def doSomething(value)
if (value.is_a?(Array))
value.any_array_method # For eg: value.include?('a')
else
raise "Expected array value"
end
end
你可以这样称呼它:
doSomething(['a', 'b', 'c'])
如果你用数组以外的任何其他参数调用它,那么它将给出:
RuntimeError: Expected array value
您也可以传递错误消息,而不是引发取决于您的异常。
希望对您有所帮助。