what does mean &-> in ruby

0 votes
asked Sep 11, 2017 by j-doe

Trying to understand the solution to this problem but i have no idea what this symbol means &-> can someone help

# Say you have an array for which the ith element is the price of a given
# stock on day i. Design an algorithm to find the maximum profit. You may
# complete as many transactions as you like (ie, buy one and sell one share
# of the stock multiple times). However, you may not engage in multiple
# transactions at the same time (ie, you must sell the stock before you buy
# again).

def max_profit(prices)
  prices.each_cons(2).map(&->(p1, p2){ [p2 - p1, 0].max }).reduce(0, &:+)

2 Answers

0 votes
answered Sep 11, 2017 by fgb

It's two operators together. -> creates a lambda, and & passes it as a block.

0 votes
answered Sep 11, 2017 by gerry

There are 2 operators involved:

  • -> creates a lambda
  • & will take a Proc (or lambda) and pass it as block

The same code could be written as:

prices.each_cons(2).map { |p1, p2| [p2 - p1, 0].max }.reduce(0, &:+)
Welcome to Q&A, where you can ask questions and receive answers from other members of the community.