Programming

루비에서 클래스와 Klass의 차이점은 무엇입니까?

procodes 2020. 8. 11. 21:18
반응형

루비에서 클래스와 Klass의 차이점은 무엇입니까?


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에서는 대소 문자가 중요하다는 점에 주목할 가치가 있습니다. 대문자로 시작하는 토큰은 상수입니다. 곡괭이를 통해 :

상수 이름은 대문자와 이름 문자로 시작합니다. 클래스 이름과 모듈 이름은 상수이며 상수 명명 규칙을 따릅니다. 관례 상 상수 변수는 일반적으로 대문자와 밑줄을 사용하여 철자를 사용합니다.

따라서 올바른 철자는 classand klass가 아니라 Classand Klass입니다. 후자는 상수, 그리고 둘 것 ClassKlass유효한 상수 이름입니다,하지만 난 명확성을 위해 그들을 사용에 대해 추천 할 것입니다.


klassRails (또는 ActiveRecord) 메서드 이기도합니다 . 연관 클래스를 가져 오는 데 사용됩니다.

링크 된 내용에 명시된대로 :

class Author < ActiveRecord::Base
  has_many :books
end

Author.reflect_on_association(:books).klass
# => Book

klassclazzclasz은 예약어를 돌아 다니는 데 사용되는 창의적인 맞춤법 오류 class입니다.

의도적 인 맞춤법 오류보다는 class1또는 cl또는 classX또는 무언가 를 사용하는 것이 눈에 덜 거슬리는 것입니다.


하나는 클래스의 이름이고 다른 하나는 기본적으로 정의되지 않은 상수입니다. 그리고 당신이 볼 가능성이 높아 쌍을 위해, class그리고 klass후자는 단지 식별자 (문자 다른 문자열처럼) 동안, 전자는 클래스를 정의하는 키워드입니다. "class"라는 단어를 쓰고 싶을 때 사용되지만 예약어이기 때문에 사용할 수 없습니다.

참고 URL : https://stackoverflow.com/questions/4299289/what-is-the-difference-between-class-and-klass-in-ruby

반응형