항상 else 문을 사용하는 이유와 비어 있는 값과 누락된 값의 근본적인 차이점안녕하세요 여러분,
여기에 약간의 이론적 질문이 있습니다. 저는 현재 동료를 위해 JSL 스크립팅 자습서를 작성하고 있으므로 JSL이 작동하는 방식을 잘 이해하려고 노력하고 있습니다.
한 번 포럼에서 'Else' 문으로 Empty()를 추가하는 것을 의미하더라도 'If' 루프 내에서 항상 'Else' 문을 사용해야 한다는 내용을 읽은 적이 있습니다.
차이점을 확인하기 위해 스크립트 편집기를 사용해 보았습니다.
y=if(1>2, 1);
z= if (1>2, 1 , Empty());
Show (y);
Show (z);
Show (Is Missing (y) );
Show (Is Missing (z) );
Show (Is Empty (y) );
Show (Is Empty (z) );
x= If (y==z, "true", "false");
Show (x); <BR /><BR />// results :<BR />y = .;<BR />z = Empty();<BR />Is Missing(y) = 1;<BR />Is Missing(z) = 1;<BR />Is Empty(y) = 0;<BR />Is Empty(z) = 1;<BR />x = .;
따라서 값 Empty()는 누락된 값이고 비어 있는 값이지만 '.' 누락되었지만 비어 있지 않습니다. 어떤 차이가 있습니까? 둘 다 비교 연산자에 사용될 때 누락된 값을 반환한다는 사실을 감안할 때 왜 Empty()를 'Else' 문으로 사용해야 합니까?
이는 또한 if 문에서 테스트한 조건이 누락된 경우 참도 거짓도 아니므로 루프가 두 문 중 어느 것도 반환하지 않는다는 사실을 보여줍니다. 이는 항상 염두에 두는 것이 좋습니다!
Re: 항상 else 문을 사용하는 이유와 빈 값과 누락된 값의 근본적인 차이점FWIW ELSE 조건이 없으면 ELSE 문을 사용하지 않습니다.내 코드를 간단하고 엄격하게 유지합니다.나는 if()가 함수라는 것을 알고 있고 그것을 그대로 사용하는 방법을 알고 있습니다.내가 사용했던 다른 언어의 보류일 수도 있습니다.
Re: 항상 else 문을 사용하는 이유와 빈 값과 누락된 값의 근본적인 차이점일반적인 컴퓨터 프로그래밍과 특히 JMP 스크립팅이 심각한 주제라는 데 동의합니다. 스크립트를 저장하고 다른 사람이 작성한 스크립트를 함께 해킹하면 지금까지만 얻을 수 있습니다. 일반적으로 혼란과 좌절이 발생합니다.
우리 교육이 선택 사항이 아니라는 점에 유감입니다. 우리의 입문 과정은 성숙했으며(약 20년) 호평을 받았습니다. 무료 또는 유료로 제공되는 JSL에 대한 다른 교육은 알지 못합니다. 특정 주제를 다루는 무료 동영상이 있을 수 있지만 마음가짐을 전달하는지 의심스럽습니다. 일반적으로 '방법' 또는 '요리책' 스타일입니다.
아마도 다른 커뮤니티 회원이 귀하에게 적합한 교육에 대해 알고 있을 것입니다.
Re: 항상 else 문을 사용하는 이유와 빈 값과 누락된 값의 근본적인 차이점제한적 사고방식으로 내 창의성을 제한하고 싶지는 않습니다. 이 분야에 대한 교육이 부족한 것 같습니다. 나는 몇 달 전에 JSL에서 스크립팅을 평가했는데, 주로 기존 스크립트를 반복하고 스크립팅 인덱스와 스크립팅 가이드 pdf를 살펴보았습니다. 이제 JSL의 잠재력을 발휘하려면 좀 더 진지한 것이 필요하다고 생각합니다.
JSL 학습을 위한 (무료) 온라인 리소스를 알고 계십니까? 귀하가 직원이고 귀하의 회사에서 유료 과정을 제공하기 때문에 이것이 까다로운 질문일 수 있다는 것을 알고 있지만 현재 이것은 저에게 선택 사항이 아닙니다.
Re: 항상 else 문을 사용하는 이유와 빈 값과 누락된 값의 근본적인 차이점몇 가지 중요한 질문을 합니다.
내 기본 요점은 모든 컴퓨터 프로그래밍 언어와 마찬가지로 JSL 구문과 관용구는 우리의 친구이지만 우리는 그것들의 노예가 아니라는 것입니다. 내 질문은 "무엇을 기대합니까?" 코드를 작성하거나 수정할 때마다 이 질문에 대한 답이 필요하다는 점을 지적하기 위한 것입니다. 명확한 대답은 우리 코드의 모든 차이를 만듭니다.
예, 함수는 스크립트 작성의 핵심 요소입니다. 정의에 따라 모든 함수는 결과를 반환합니다. 그러나 우리는 반환되는 결과보다 함수의 부작용에 더 관심이 있습니다. 예를 들어, V List Box() 함수는 생성한 표시 상자 개체에 대한 참조를 반환합니다. 참조에 있는 것보다 상자 자체(부작용)에 더 관심이 있을 수 있습니다.
많은 초보자 스크립터는 If() 및 For()가 명령문 또는 명령이라고 생각합니다. 그들은 기능입니다. 진술 사고 방식은 창의성을 제한할 수 있습니다. 마음가짐이 중요합니다. 다음 스크립트는 동일한 작업을 수행하는 두 가지 접근 방식을 보여 주지만 두 번째 접근 방식은 진술 사고 방식을 가진 사람에게는 절대 발생하지 않습니다.
Names Default to Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
mean weight = Col Mean( dt:weight );
// assign within the If() function call
dt << New Column( "Condition 1", Numeric, Continuous );
For Each Row(
If( :weight < mean weight, dt:Condition 1 = -1, dt:Condition 1 = 1 );
);
// assign with the returned result from the If() function call
dt << New Column( "Condition 2", Numeric, Continuous );
For Each Row(
dt:Condition 2 = If( :weight < mean weight, -1, 1 );
);
Re: 항상 else 문을 사용하는 이유와 빈 값과 누락된 값의 근본적인 차이점안녕하세요 마크베일리,
이러한 통찰력에 감사드립니다
실제로 Empty()를 else 문으로 사용해야 하는 것이 이상하다고 생각했습니다. 이 방법을 언급한 게시물을 찾으려고 했지만 더 이상 찾을 수 없어서 사용자에게 이것이 왜 유용하다고 생각하는지 묻지 못했습니다.
귀하의 질문에 대한 답변: 조건부 If() 함수로 무엇을 하려고 합니까? 그것이 무엇을 반환하기를 기대합니까?
음, JSL이 함수 기반 언어이고 함수가 값을 반환한다는 사실을 잊기 쉽습니다. 따라서 일반적으로 If 문이 반환하는 것을 실제로 사용하지 않습니다. 저는 JSL의 기초를 이해하는 방법으로 이것을 탐구하고 있었을 뿐입니다. 실제로 나는 If 문에서 반환된 값을 사용하는 용도가 무엇인지 궁금합니다.
내가 생각할 수 있는 것은 스크립트에서 공간을 확보하거나 조금 더 빠르게 만드는 것뿐입니다. 하지만 그런 식으로 똑똑해지려고 하면 나중에 다시 돌아와서 오류/버그를 생성할 것 같은 느낌이 듭니다.
이것에 대한 당신의 의견은 무엇입니까?
Re: 항상 else 문을 사용하는 이유와 빈 값과 누락된 값의 근본적인 차이점Is Empty()를 사용하는 방법은 변수가 할당되었는지 확인하는 것입니다.따라서 다음에 대한 구문 오류를 방지합니다.
names default to here(1);
show(z);
변수 "z"가 참조된 적이 있는지 확인할 수 있습니다.
Names Default To Here( 1 );
If( Is Empty( z ) == 0,
Show( z )
);
더 좋은 예는 아래에 있습니다.
Names Default To Here( 1 );
x=1;
If( x > 2, z = 7 );
If( Is Empty( z ) == 0,
Show( z )
);
JSL은 해석된 언어이므로 JSL의 논리 흐름을 따릅니다. 따라서 x <= 2이면 JSL은 z = 7을 실행하지 않으므로 z가 비어 있는지 확인하지 않습니다() JSL이 구문 오류를 발생시키므로 필요합니다.
귀하의 예에서는 z에 값을 할당하는 다른 형식을 사용하고 있습니다.
names default to here(1);
z=(if(1>2, 7));
show(z);
변수 z는 1>2인 경우 7의 값을 갖지만 참이 아닌 경우 z는 더 이상 할당되지 않으므로 누락된 값 "."을 갖게 됩니다.여기에서 이점은 일단 할당이 이루어지면 JSL이 변수 z를 처리했으며 나중에 프로그램 흐름에서 z가 참조되는 경우 구문 오류가 발생하지 않는다는 것입니다.
이는 If() 함수에서 반환되는 false의 결과로 Empty()를 할당해야 하는지에 대한 질문을 가져옵니다.
names default to here(1);
z=(if(1>2, 7, Empty()));
show(z);
그런 다음 단순히 z를 누락된 값으로 갖고 싶지 않고 Is Empty() 대 Is Missing()을 확인하는 것으로 귀결됩니다.저는 개인적으로 누락된 값 경로를 선호하는데, 이는 z가 할당된 적이 없다는 확인으로 Empty()를 남기기 때문입니다. .
Re: 항상 else 문을 사용하는 이유와 빈 값과 누락된 값의 근본적인 차이점나는 대부분의 사람들(1998년)보다 더 오랫동안 스크립트를 작성해 왔습니다. 저는 모든 스크립팅 과정의 저자이자 강의자입니다. 항상 'else' 조건에 대한 인수를 포함하거나 비어 있는 특정 반환 값이 없는 경우. 나는 확실히 그것을 놓쳤거나 그것을 사용하지 않은 것에 대해 비용을 지불하지 않았습니다. 이 문제는 '상황에 따라'의 또 다른 경우라고 생각합니다. 조건부로 무엇을 하려고 합니까? 만약에() 기능? 그것이 무엇을 반환하기를 기대합니까?
의 기본 반환 값 만약에() 기능은 없어진 첫 번째 인수가 false로 평가되고 두 개의 인수만 있는 경우. 에 저장된 값으로 이 동작을 시연했습니다. 와이 . 그만큼 만약에() 함수는 JSL이 2000년 JMP 4에 처음 도입된 이후로 이와 같이 동작했습니다.
에 세 번째 인수를 제공할 수 있습니다. 만약에() 첫 번째 인수가 거짓으로 평가될 때 평가되고 반환되는 함수입니다. 에 저장된 값으로 이 동작을 시연했습니다. 지 당신이 공급한 곳 비어 있는() 세 번째 인수로 기능합니다.
없어진 알 수 없는 값을 나타냅니다. 대부분 알 수 없는 데이터 값이나 Log( -1 )와 같은 불가능한 숫자 표현식을 평가한 결과를 나타냅니다. 내 생각에는 없어진 인수로 표시되지 않는 조건에 대한 기본 반환 값으로 많은 의미가 있습니다.
비어 있는 바로 그것입니다. 아무것도 없는 상태를 나타냅니다. 예를 들어 전화하면 현재 데이터 테이블() 데이터 테이블이 열려 있지 않으면 인수 없이 반환합니다. 비어 있는 .