-
Notifications
You must be signed in to change notification settings - Fork 7
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
배열 구현 개선 #36
Comments
|
JS에서 대괄호 접근을 오버라이드 하는 방법이 있으면 그걸로 offset을 줘도 될 것 같고, 아니면 Java처럼 YaksokList에 get, set 함수를 만들고 컴파일 될 때 그 함수들을 쓰도록 하는 방법도 있을텐데 급한 건 아니니 천천히 해도 될 것 같아요. |
proxy를 사용하면 배열접근을 덮어씌우는 게 가능하긴 한데 es5에서는 불가능해요. (현재 구현체 중에서는 엣지랑 파이어폭스만 지원합니다.) |
배열 잘라내기는 따로 이슈로 등록하겠습니다: #38 |
후자는 약속이 정적 타입 언어가 아니기 때문에 런타임을 더럽게 만들지 않는 이상 불가능 하다는 부분이 잘 이해가 되지 않아요. 컴파일러 레벨에서 대괄호를 이용한 원소 접근이 L Value인지 R Value인지 구분하는 것으로 해결 가능하지 않나요? |
YaksokList에 .get(index) => return this[index-1]; .set(index, value) => this[index-1] = value; 등으로 선언해 두고 다음과 같이 컴파일 할 때 바꿔주면 가능할 것 같은데요. 목록: [1, 2, 3] -> var 목록 = new YaksokList(1, 2, 3); //내부적으로 0-indexed로 들고 있음 |
대괄호를 사용한 원소 접근을 배열에 한해서만 허용한다면 그 이야기가 맞는 것 같아요. 저는 대괄호를 사용한 원소 접근은 자바스크립트와 동일하다고 생각했어요. 그렇다면 모든 객체가
만약 정적타입 언어라면 접근하는 변수가 배열타입인 경우에 한해서 |
약속 자료형 중에 대괄호 인덱싱을 지원하는게 배열과 사전 밖에 없어서 간단할거라고 생각했는데 런타임 바깥에서 들어오는 값도 있군요. 그런데 애초에 보여주기에서 나오는 쉼표가 신경쓰이는 문제였으니 지금 구현을 그대로 두고 toString을 오버라이드 하는건 어떨까요. |
사실 그거 아마 |
이건 좀 치명적인 문제 같은데, 반복문에서도 0번째 undefined 원소가 사용됩니다.
undefined 냠냠쩝쩝, 아침 냠냠쩝쩝, 점심 냠냠쩝쩝, 저녁 냠냠쩝쩝 순서로 출력됩니다. |
아 그렇네요. 그건 이터레이터 코드를 수정하면 고칠 수 있기는 해요. |
반복에서 버그는 고쳤어염ㄹㄹ |
The text was updated successfully, but these errors were encountered: