0

Ruby – return

เรื่องหนึ่งอาจจะยากที่สุดเวลาเขียน Ruby สำหรับคนที่เขียน Java มาก่อนอาจจะเป็นเรื่อง return

ผมว่าดูตัวอย่างพวกนี้แล้วก็จะเข้าใจได้ไม่ยาก

เหมือนกัน


def func1
  return 10
end

def func1
  10
end

ไม่แน่ใจว่าเหมือนกันไหมแต่ return ค่าเดียวกัน


def func2 a
  if a > 100
    return 10
  else
    return 20
  end
end

def func2 a
  if a > 100
    10
  else
    20
  end
end

แต่ถ้ามันมีหลาย ๆ คำสั่ง มันก็จะเอาคำสั่งสุดท้าย แบบข้างล่างนี่ก็จะได้ผลเหมือนกัน

def func3
  func4(10)
  return func5(20)
end

def func3 a
  func4(10)
  func5(20)
end

มีคนถามว่าแล้วจะมี return ไปทำไม มีคนตอบว่ามันทำให้ function หยุดตรงกลางได้ เช่น

แบบข้างล่างถ้า a = 101 มันก็จะ return 20 แล้วก็ไม่ไปทำ puts ข้างล่าง

def func6 a
  if a > 100
    return 20
  end
  puts 30
  puts 40
  50
end

ปกติแล้วเวลาเขียน Ruby เราต้องติดเสมอว่าจะ return อะไร

… ถ้ามั่วก็ขออภัย

ป.ล. ท่าพวกนี้ Ruby น่าจะได้มาจาก Scheme แต Scheme จะเขียนหลาย ๆ คำสั่งต่อกันเลยไม่ได้ ต้องมีบางทีต้องไปอยู่ใน (begin ) … แต่ช่างเถอะ :-P

0

ผมเขียน Ruby แล้วติดว่า JSON parser มันช้า วิธีแก้คือใช้ yajl-ruby