«language-design» 태그된 질문

프로그래밍 언어의 모든 측면 디자인과 관련된 질문에 대한 태그입니다.

8
왜 배열이 공변이지만 제네릭은 변하지 않습니까?
Joshua Bloch의 효과적인 Java에서 배열은 두 가지 중요한 점에서 일반 유형과 다릅니다. 첫 번째 배열은 공변량입니다. 제네릭은 변하지 않습니다. 공변량은 단순히 X가 Y의 하위 유형 인 경우 X []도 Y []의 하위 유형이됨을 의미합니다. 배열이 공변량 임 string이 Object의 하위 유형이므로 String[] is subtype of Object[] 불변은 단순히 X가 Y의 …

10
개인 필드가 인스턴스가 아닌 유형의 개인 필드 인 이유는 무엇입니까?
C # (및 다른 많은 언어)에서는 동일한 유형의 다른 인스턴스의 개인 필드에 액세스하는 것이 완벽합니다. 예를 들면 다음과 같습니다. public class Foo { private bool aBool; public void DoBar(Foo anotherFoo) { if (anotherFoo.aBool) ... } } 애즈 C # 1 명세 (섹션 3.5.1, 3.5.2) 전용 필드 액세스 타입이 아닌 경우에 …


5
Java가 Throwable의 일반 서브 클래스를 허용하지 않는 이유는 무엇입니까?
Java Language Sepecification , 3 판 에 따르면 : 일반 클래스가의 직접 또는 간접 하위 클래스 인 경우 컴파일 타임 오류입니다 Throwable. 이 결정이 내려진 이유를 이해하고 싶습니다. 일반적인 예외의 문제점은 무엇입니까? (내가 아는 한, 제네릭은 단순히 컴파일 타임 구문 설탕이며 파일 Object에서 어쨌든 번역 .class되므로 제네릭 클래스를 효과적으로 선언하는 …


7
루비는 왜 개인 및 보호 방법을 모두 가지고 있습니까?
이 기사를 읽기 전에 Ruby의 액세스 제어가 다음과 같이 작동한다고 생각했습니다. public- 모든 객체에 의해 액세스 할 수 있습니다 (예를 들어 Obj.new.public_method) protected -객체 자체와 하위 클래스에서만 액세스 할 수 있습니다 private -protected와 동일하지만 메소드가 서브 클래스에 존재하지 않습니다. 그러나 것으로 보인다 protected와 private같은 역할을 전화 할 수 없다는 사실을 …


9
switch 문이 왜 휴식을 취하도록 설계 되었습니까?
간단한 switch 문이 주어지면 switch (int) { case 1 : { printf("1\n"); break; } case 2 : { printf("2\n"); } case 3 : { printf("3\n"); } } 사례 2에 break 문이 없으면 사례 3에 대한 코드 내에서 실행이 계속됨을 의미합니다. 이것은 우연이 아닙니다. 그런 식으로 설계되었습니다. 이 결정이 내려진 이유는 …
139 c  language-design 

28
"catch"또는 "finally"범위에서 "try"로 변수가 선언되지 않은 이유는 무엇입니까?
C # 및 Java (및 다른 언어도 가능)에서 "try"블록에 선언 된 변수는 해당 "catch"또는 "finally"블록의 범위에 속하지 않습니다. 예를 들어 다음 코드는 컴파일되지 않습니다. try { String s = "test"; // (more code...) } catch { Console.Out.WriteLine(s); //Java fans: think "System.out.println" here instead } 이 코드에서는 catch 블록의 s에 대한 …

10
파이썬 dict.update ()가 객체를 반환하지 않는 이유는 무엇입니까?
나는 노력하고있다 : award_dict = { "url" : "http://facebook.com", "imageurl" : "http://farm4.static.flickr.com/3431/3939267074_feb9eb19b1_o.png", "count" : 1, } def award(name, count, points, desc_string, my_size, parent) : if my_size > count : a = { "name" : name, "description" : desc_string % count, "points" : points, "parent_award" : parent, } a.update(award_dict) return self.add_award(a, …

13
C ++에 별도의 헤더 파일이 필요한 이유는 무엇입니까?
왜 C ++이 .cpp 파일과 동일한 기능을 가진 별도의 헤더 파일을 필요로하는지 이해하지 못했습니다. 클래스를 작성하고 리팩토링하는 것이 매우 어렵고 불필요한 파일을 프로젝트에 추가합니다. 그리고 헤더 파일을 포함해야하지만 이미 포함되어 있는지 명시 적으로 확인해야하는 문제가 있습니다. C ++은 1998 년에 비준되었으므로 왜 이렇게 설계 되었습니까? 별도의 헤더 파일을 사용하면 어떤 …

24
변수 이름을 숫자로 시작할 수없는 이유는 무엇입니까?
"왜 변수 이름을 숫자로 시작할 수 없는가?"라는 질문을하면서 얼마 전 새로운 C ++ 개발자와 함께 일하고있었습니다. 일부 숫자에는 텍스트가있을 수 있으며 (123456L, 123456U), 어떤 양의 알파 문자가있는 모든 것이 변수 이름이라고 생각하면 불가능할 것입니다. 정답입니까? 더 이상의 이유가 있습니까? string 2BeOrNot2Be = "that is the question"; // Why won't this …

9
Ruby가 i ++ 또는 i-(증가 / 감소 연산자)를 지원하지 않는 이유는 무엇입니까?
사전 / 사후 증가 / 감소 연산자 ( ++및 --)는 표준 프로그래밍 언어 구문입니다 (적어도 절차 및 객체 지향 언어의 경우). 루비가 왜 그것들을 지원하지 않습니까? 난 당신과 같은 일을 수행 할 수 이해 +=하고 -=있지만, 그냥 그렇게 간결하고 기존의 특히 이후, 그런 일을 제외 이상한 임의 보인다. 예: i …

9
String switch 문이 null case를 지원하지 않는 이유는 무엇입니까?
Java 7 switch문이 null케이스를 지원하지 않고 대신 던지는 이유가 궁금합니다 NullPointerException. 아래의 주석 처리 된 줄을 참조하십시오 ( 의 Java 자습서 기사에서switch 가져온 예제 ). { String month = null; switch (month) { case "january": monthNumber = 1; break; case "february": monthNumber = 2; break; case "march": monthNumber = 3; …

8
헤더에 C ++ 인라인 함수가있는 이유는 무엇입니까?
NB 이것은 인라인 함수를 사용하는 방법이나 작동 방식에 대한 질문이 아닙니다. 클래스 멤버 함수의 선언은 함수를로 정의 할 필요가 없으며 함수 inline의 실제 구현 일뿐입니다. 예를 들어, 헤더 파일에서 : struct foo{ void bar(); // no need to define this as inline } 그렇다면 클래스 함수의 인라인 구현이 헤더 파일에 …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.