루비에 어떤 클래스/모듈에 해당 메소드가 있는지 아는 사람이 있습니까?Ruby에서 클래스/모듈이 = 메소드에 있습니까?
나는
a equals b
것은 그래서 어떤 클래스/모듈에 그래서 난 별칭을 만들 수 있습니다 알고있다에
a = b
을 변환 할.
감사합니다.
루비에 어떤 클래스/모듈에 해당 메소드가 있는지 아는 사람이 있습니까?Ruby에서 클래스/모듈이 = 메소드에 있습니까?
나는
a equals b
것은 그래서 어떤 클래스/모듈에 그래서 난 별칭을 만들 수 있습니다 알고있다에
a = b
을 변환 할.
감사합니다.
=
은 할당 연산자입니다. 재정의 할 수 없습니다.
또한 새 연산자를 정의 할 수 없습니다. Jörg가 지적했듯이 a equals b
은 a(equals(b))
과 동일하거나 self.a(self.equals(b))
이므로, :a
메시지와 :equals
메시지에 모두 응답하는 개체가 필요합니다.
에는 "a b"를 합성 설탕으로 만드는 방법이 있습니까? (학습을 목적으로하는 것이지 모범 사례 라 할지라도) –
'a equals b'는'self.a (self.equals (b))'와 같은'a (equals (b)) '와 같습니다. . 따라서': a' 메시지와': equals' 메시지에 모두 응답하는 객체가 필요하며 객체의 컨텍스트에서 DSL을 평가해야합니다. –
@ Jörg : 아, 맞아 ... –
나는 대답을 제공하기 위해 노력했지만, 루비 똑똑처럼 나보다 외모 :
# Adults! Don't try this at work. We're what you call "amateurs"
def a=(*args)
if args.size == 1
STDERR.puts "Assignment"
@a = args[0]
else
STDERR.puts "Comparison"
return args[0] == args[1]
end
end
self.a=([1,2,3])
Assignment
=> [1, 2, 3]
self.a=([1,2,3],[4,5,6])
SyntaxError: (irb):12: syntax error, unexpected ',', expecting ')'
self.a=([1,2,3],[4,5,6])
^
from C:/Ruby19/bin/irb:12:in `<main>'
self.send(:a=, [1,2,3],[4,5,6])
Comparison
=> false
가 그냥 궁금해서, 당신은 할당을 과부하 할 왜? (== 즉, 평등함을 이해할 수 있습니다.) – Gishu