Ruby를 처음 사용했습니다. 나는 내가 다른 언어에서와 같이 루비에서 일을 성공적으로 시도하지 못한 단계에있다.Ruby에서 외부 범위의 변수에 액세스 할 수있는 방법을 객체에 추가하는 방법은 무엇입니까?
개체에 메서드를 추가하려고합니다. 즉, 겸손한 배열입니다. 모든 어레이가 아니라 하나의 특정 배열에. 이 메서드는 외부 범위의 변수에 액세스 할 수 있어야합니다.
내 생각에 def
을 사용하여 개체에 메서드를 추가 할 수 있지만이 메서드는 외부 범위의 변수에 액세스 할 수 없습니다. 그 때문에 나는 lambda
또는 Proc.new
을 사용할 필요가 있지만 어떻게 lambda/proc를 배열에 속성으로 "부착"하는지 알 수 없습니다.
var x = 3
var array = [1, 2, 3, 4]
array.multiply_by_x = function() {
var i = this.length
while (i--) {
this[i] *= x
}
}
루비 위의 가능한 유사한인가 :이 바보 예를 보여줍니다로서이, 간단 자바 스크립트에서
?
'singleton_class'는'ActiveSupport'에 정의되어 있으므로 바닐라 1.8에서는'(class << array; self; end) .send ...' – cam
우수! 이것은 정확히 내가 한 것입니다. 이제 실제로 어떤 일을하는지, 그리고 왜'x'가이 경우에 접근 가능한지를 이해하기 위해 약간의 독서를해야합니다. – davidchambers
@cam, 당신 말이 맞아요. 나는 혼란 스럽다. – Samnang