Returning values from a defined function

I’m wondering if it is possible, and if so how, to return values from a defined function. I’ve trawled through the lang help and don’t see a return statement, nor do I see any examples from the tutorial that return a value, and yet it must be possible, since the built-in functions often seem to return values. How do I do this?

Yes function will return values. You don’t neccesarily have to express this explicitly
See the following examples

define :double do |n|
  n = 2 * n

puts double 13    #gives 26

define :doubleWrong do |n|
  result = 2*n
  k = 33

puts doubleWrong 13 #=> 33 ie it shows the last evaluated expression value

define :doubleOK do |n|
  result = 2*n
  k = 33
  return result #specifies the return value

puts doubleOK 13  #gives the correct result 26

So you may see defined functions with or without a return keyword, but both are possible.

of course if the function plays something, then the “result” can be heard as it executes eg.

define :pscale do |scale|
  play_pattern_timed scale,0.2, release: 0.5

pscale scale(:c4,:minor_pentatonic) #play the scale
pscale scale(:c4,:minor_pentatonic).reverse #play it in reverse

So, am I right in thinking then that if there isn’t an explicit return statement, the function returns the result of the last assignment?

Yes. If the return keyword is not included the last expression in the function is returned

Thank you. I think this info is not in the tutorial and might be included as part of the define section.