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

2

แปลง mediawiki text เป็น html ด้วย mediacloth (ruby)

ผมเขียน Ruby มานานมากแล้วตั้งแต่พ.ศ. 2544 แล้วก็ไม่ได้เขียนอีกเลย (ล้อเล่นนะ) … จริงๆ ก็ไม่ขนาดนั้นคือเขียนสมัยโน้นแล้วก็เขียนอะไรเล่น เล็กๆ น้อยๆ เลยทำให้ไม่เคยใช้ gem เท่าไหร่ก็ต้องมาอ่านนิดหน่อย

วันนี้สั่ง sudo gem ins -r mediacloth ไป ^_^ ก็ลงได้

แล้วก็มาเขียนโปรแกรมตามตัวอย่างเลย แค่เพิ่ม gem ‘mediacloth’, ‘>= 0.0.3′ เข้าไป

require 'rubygems'
gem 'mediacloth', '>= 0.0.3'
require 'mediacloth'
wiki_text = open('test2.wiki').read()
puts MediaCloth::wiki_to_html(wiki_text)

อยากจะแปลงไฟล์ mediawiki มาเป็น html หรืออะไรอื่น mediacloth มันก็แปลงได้สำหรับตัวอย่างง่ายๆ พอเอาทั้งหน้าไปใส่ ก็เจ๊งตามเคย … กลุ้มใจ.

update: ว่าจะลอง Parser.php จาก Mediawiki เลย แต่ไว้พรุ่งนี้แล้วกัน … หรือคืนนี้ดี?