函数参数中的Ruby解构

时间:2018-08-10 17:03:14

标签: ruby destructuring

您可以直接在Ruby中解构函数参数吗?

def get_distance(p1,p2)
  x1,y1 = p1
  x2,y2 = p2
  ((y2-y1)**2 + (x2-x1)**2)**0.5
end

我尝试了明显的方法:

def get_distance([x1,y1],[x2,y2])
  ((y2-y1)**2 + (x2-x1)**2)**0.5
end

但是编译器不喜欢这样。

2 个答案:

答案 0 :(得分:2)

那呢:

def f((a, b), (c, d))
  [a, b, c, d]
end

f([1, 2], [3, 4]) # ==> [1, 2, 3, 4]

答案 1 :(得分:0)

除了解构数组参数外,还可以解构散列。这种方法称为keyword arguments

# Note the trailing colon for each parameter. Default args can be listed as keys
def width(content:, padding:, margin: 0)
  content + padding + margin
end

# Can use args in any order
width({ padding: 5, content: 10, margin: 5 }) # ==> 20