문제

내가 말하면 :

x = "ABC"

이것은 이전에 프로그램에서 X에 대해 아무 말도했는지 여부에 관계없이 선언, 정의 및 할당처럼 보입니다.

이 올바른지?

나는 선언, 정의 및 어시스트를 위해 Ruby의 올바른 용어가 무엇인지, 또는 Ruby의 동적 타이핑으로 인해 이러한 것들 사이에 차이가 있는지 잘 모르겠습니다.

@TG : 포인트 # 2 : X = "ABC"문 앞에 X가 존재하더라도 x = "ABC"문을 정의/재정의를 호출 할 수 없습니까?

도움이 되었습니까?

해결책

  1. 선언: 아니.
    이야기하는 것은 의미가 없습니다 선언 언어의 선언과 유사하지 않기 때문에 루비의 변수. 컴파일러를 위해 설계된 언어에는 컴파일러가 데이터 유형의 크게 얼마나 큰지, 다른 부분에 액세스하는 방법을 미리 알아야하기 때문에 선언이 있습니다. 예를 들어, 내가 C에서 말하면 :

    int *i;
    

    그런 다음 컴파일러는 어딘가에 I에 대한 메모리가 따로 설정되어 있음을 알고 있으며 int에 대한 포인터를 잡는 데 필요한만큼 큽니다. 결국 링커는 모든 참조를 연결합니다 i 함께하지만 적어도 컴파일러는 어딘가에 있다는 것을 알고 있습니다.

  2. 정의: 아마.
    정의 일반적으로 무언가에 대한 초기 값을 설정합니다 (적어도 친숙한 컴파일 된 언어에서). 만약에 x 전에 존재하지 않았습니다 x = "abc" 진술, 그러면 루비가 기호에 값을 할당해야 할 때이기 때문에 이것을 정의라고 부를 수 있다고 생각합니다. x.

    그러나 다시, 정의 사람들이 일반적으로 값의 초기 정적 할당을 해당 변수의 선언과 일부 변수에 구별하는 데 사용하는 특정 용어입니다. 루비에는 그런 말이 없습니다. 당신은 일반적으로 변수라고 말합니다 한정된 현재 범위의 어딘가에 값이 할당 된 경우 한정되지 않은 그렇지 않은 경우.

    당신은 보통 그것에 대해 이야기하지 않습니다 정의, 루비에서는 그냥 그냥 과제. 당신에게 말하는 것을 정당화 할 특별한 맥락은 없습니다 정의 다른 언어가있는 것처럼.

    그것은 우리를 ... ...

  3. 과제: 예.
    당신은 이것을 분명히라고 부를 수 있습니다 과제, 기호에 값을 할당하므로 x. 나는 아무도 그것에 동의하지 않을 것이라고 생각합니다.

다른 팁

거의. 그리고 바로 다음 줄에서 당신은 다음과 같습니다.

x = 1

그럼 당신은 그냥 다시 정의되었습니다 그것은 그것을 할당했을뿐만 아니라 그것을 할당했다 (지금은 정수가 아니라 문자열이 아닙니다). 오리 타이핑은 아마도 당신이 익숙한 것과 매우 다릅니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top