我用不同的方法解释了几个字符串,但它们都以相同的格式返回两个值。我想将这两个值直接传递给另一个方法。这可能吗?我一直收到错误"Expecting 2 params, got 1"
def step1 (text)
return "test1", "test2"
end
def step2 (val1, val2)
do stuff...
end
step2 (step1 "this is a string")
答案 0 :(得分:3)
使用*
进行解构,选项:
step2(*step1("this is a string")) # Note required parens around step1 param
像这样返回多个参数是语法糖;你实际上是在返回一个数组。
如果您正在尝试构建DSL,则可能需要考虑采用不同的方式。
如果您只是在处理非DSL-ish API,我可能会更改方法签名并对step1
内的数组进行解构,例如val1, val2 = arg1
并跳过一些复杂性
答案 1 :(得分:0)
您收到此错误是因为您传递的是单个参数,您可以按以下方式执行此操作:
def step1 (text)
return "step 1 called.."
end
def step2 (val1, val2)
return "step 2 called.."
end
step2(method(:step1),"this is a string")