[ruby] Ruby에서 한 줄에 메소드를 어떻게 정의합니까?

def greet; puts "hello"; end루비에 한 줄에하는 방법을 정의 할 수있는 유일한 방법은?



답변

괄호를 사용하면 세미콜론을 사용할 필요가 없습니다.

def hello() :hello end


답변

완전히 새로운 답변을 제공하십시오.

일반적으로 한 줄 방법은 피하십시오. 비록 그들이 야생에서 다소 인기가 있지만, 그들의 사용을 바람직하지 않게 만드는 정의 구문에 대한 몇 가지 특징이 있습니다. 여하튼- 한 줄 메서드에는 표현식이 하나만 있어야합니다
.

# bad
def too_much; something; something_else; end

# okish - notice that the first ; is required
def no_braces_method; body end

# okish - notice that the second ; is optional
def no_braces_method; body; end

# okish - valid syntax, but no ; make it kind of hard to read
def some_method() body end

# good
def some_method
  body
end

규칙에 대한 한 가지 예외는 빈 본문 메서드입니다.

# good
def no_op; end

에서 bbatsov / 루비 – 스타일 가이드 .


답변

def add a,b; a+b end

세미콜론은 Ruby의 인라인 문 종결 자입니다.

또는 define_method방법을 사용할 수 있습니다 . (편집 : 이것은 루비 1.9에서 더 이상 사용되지 않습니다)

define_method(:add) {|a,b| a+b }


답변

또 다른 방법:

define_method(:greet) { puts 'hello' }

메서드를 정의하는 동안 새 범위를 입력하지 않으려는 경우 사용할 수 있습니다.


답변

또 다른 방법 :

def greet() return 'Hello' end


답변