Class와 Klass의 차이점은 무엇입니까?
답변
class
새 클래스를 정의하는 데 사용되는 키워드입니다. 예약 된 키워드이므로 변수 이름으로 사용할 수 없습니다. Ruby의 키워드를 변수 이름으로 사용할 수 없으므로 def
또는 module
또는 if
또는 end
등 이라는 이름의 변수를 가질 수 class
없습니다. 다르지 않습니다.
예를 들어 다음을 고려하십시오.
def show_methods(class)
puts Object.const_get(class).methods.inspect
end
show_methods "Kernel"
이를 실행하려고 class
하면 변수 이름으로 사용할 수 없기 때문에 오류가 발생 합니다.
test.rb:1: syntax error, unexpected kCLASS, expecting ')'
def show_methods(class)
^
test.rb:2: syntax error, unexpected ')'
puts Object.const_get(class).methods.inspect
이 문제를 해결하기 위해 klass
대신 식별자 를 사용합니다 . 특별하지는 않지만 일반적으로 클래스 또는 클래스 이름을 다룰 때 변수 이름으로 사용됩니다. 소리 나는대로 동일하지만 예약 된 키워드가 아니기 때문에 Ruby는 문제가 없습니다.
def show_methods(klass)
puts Object.const_get(klass).methods.inspect
end
show_methods "Kernel"
예상대로 출력은 다음과 같습니다.
["method", "inspect", "name", "public_class_method", "chop!"...
거기에서 (예약되지 않은) 변수 이름을 사용할 수 있지만 커뮤니티는 klass
. 특별한 마법이 없습니다. 단지 “여기서 ‘class’라는 이름을 사용하고 싶었지만 예약어라서 사용할 수 없습니다.”라는 뜻입니다.
참고로, 몇 번 잘못 입력 했으므로 Ruby에서는 대소 문자가 중요하다는 점에 주목할 가치가 있습니다. 대문자로 시작하는 토큰은 상수입니다. 곡괭이를 통해 :
상수 이름은 대문자와 이름 문자로 시작합니다. 클래스 이름과 모듈 이름은 상수이며 상수 명명 규칙을 따릅니다. 관례 적으로 상수 변수는 일반적으로 대문자와 밑줄을 사용하여 철자를 사용합니다.
따라서 올바른 철자는 class
and klass
가 아니라 Class
and Klass
입니다. 후자는 상수, 그리고 둘 것 Class
및 Klass
유효한 상수 이름입니다,하지만 난 명확성을 위해 그들을 사용에 대해 추천 할 것입니다.
답변
klass
Rails (또는 ActiveRecord) 메서드 이기도합니다 . 연관 클래스를 가져 오는 데 사용됩니다.
링크 된 내용에 명시된대로 :
class Author < ActiveRecord::Base
has_many :books
end
Author.reflect_on_association(:books).klass
# => Book
답변
klass
및 clazz
등 clasz
은 예약어를 돌아 다니는 데 사용되는 창의적인 맞춤법 오류 class
입니다.
그것은 사용하기 위해 눈에 거슬리는 훨씬 적은 것 class1
또는 cl
또는 classX
의도적으로 맞춤법보다는 또는 무언가를.
답변
하나는 클래스의 이름이고 다른 하나는 기본적으로 정의되지 않은 상수입니다. 그리고 당신이 볼 가능성이 높아 쌍을 위해, class
그리고 klass
후자는 단지 식별자 (문자 다른 문자열처럼) 동안, 전자는 클래스를 정의하는 키워드입니다. “class”라는 단어를 쓰고 싶을 때 사용되지만 예약어이기 때문에 사용할 수 없습니다.