답변:
이봐 요.
D의 함수와 템플릿 함수는 값, 메소드 (도움이되지 않음) 및 속성으로 불릴 수 있습니다.
아직 아무도이 말을 믿지 못했습니다. 바이트를 저장하는 것들을 나열하겠습니다 :
fun()
및 fun!()()
로 잘라내 fun
(단 변수가없는 가정 fun
).fun(par)
로 단축됩니다 par.fun
( 과 같은 표현이 아니라 par
속성 / 방법이 없다고 가정 ).fun
par
5+2
fun!(T)()
단축하다 fun!T
fun!(T)(par)
단축 par.fun!T
( par
재산 / 방법이 없다고 가정 fun
)그리고 객체로 :
new cls()
로 짧아 new cls
(더 많은 자바 스크립트 누구?)obj.fun()
그리고 obj.fun!()()
단축obj.fun
obj.fun!(T)()
단축하다 obj.fun!T
마지막으로 이전 버전을 사용하십시오 . 더 이상 사용되지 않는 기능을 사용하여 코드를 단축 할 수 있습니다. 최고의 조언 : D는 코드 골프에 좋지 않습니다. 코드 골프가 아닌 훌륭한 언어입니다.
D는 JavaScript입니다.
당연히 아니. 그러나, 처리 할 때 float
, double
그리고 real
, nan
IEEE 754에 지정된대로 처리되어야하고, 값은 NaN의 자신과 동등 비교하지 않는 것입니다.
writeln(double.nan == double.nan); // false
의미,
writeln(value!=value); // only true for nan
보다 짧다
import std.math;
writeln(isNaN(value));
물론, 항상 사용 math.isNaN
에 대한 실제 코드입니다. ;)
D에는 형식 유추와 auto
키워드가 있습니다. 객체가 아닌 경우 int
, 다음 auto
아마 짧다.
auto
사용하여 연관 배열을 작성할 때 작동 합니까 KeyType[ValueType]
?
auto asd = ["a":1, "b": 2];
이후 작품,하지만 KeyType[ValueType]
의 장소에 갈 것 auto
키워드가 항상 리터럴 구축 할 수있는 유형의 작동하는지, 나도 몰라
auto arr = ["a": true, "b": 6];
작동하려면 키와 값이 호환되는 유형 이어야합니다.
D는 메소드 체인에 능숙하지만 다음과 같습니다.
str.toLower.strip().split("").sort();
와 같다
sort(split(strip(str.toLower),""));
일반적으로 체인이없는 것은 짧아서 방금 깨달았으므로 휴지통 관리에 대한 답변을 짧게 할 수 있습니다 . : D
C / C ++과 마찬가지로, main
수 있습니다 int
또는 void
, 그러나 void main(){}
항상보다 짧은 것입니다 int main(){return my_func_returning_int;}
.
int main(){return output}
더 짧지 않습니까?
import std.stdio;void main(){write(7);}
이 필요합니다. 많은 언어가 리턴 코드를 설정할 수 없기 때문에 프로그램 이 숫자를 리턴 하도록하는 질문이 의심됩니다.
D는 다중 패러다임 (Object Functional) 시스템 프로그래밍 언어로서 TIMTOWTDI를 수용하는 것으로 보이거나 그 이상의 방법이 있습니다.
적절한 경우, 프로그램의 argv를 작성하십시오.
import std.stdio, std.array, std.algorithm;
void main(string[] args) {
for(int i=0;i<args.length;writeln(args[i++])){};
foreach(a;args)writeln(a);
each!writeln(args);
}
C 스타일 for-loop {}
는 빈 블록으로 필요 하며 세미콜론이나 공백 문으로 아무것도 허용하지 않습니다 ( 이 경우) . 일반적으로, 또는
;
운영 체제가 아닙니다.
char*
대신 사용할 수 있습니까 string
?
function D main parameters must be main() or main(string[] args)
또한 char
문자 그대로 한 문자이고 문자 그대로 한 문자에 char*
대한 포인터 char[]
이며 문자 리터럴의 배열입니다 (문자열이 다름). D! = C || C ++
D에는 몇 가지 유형의 C # 스타일 람다식이 있으며이 식은 단독으로 할당 할 수 있습니다.
(int a,int b)=>a*b;
auto a=(int a,int b)=>a*b;
그러나 C #과 달리 D에는 Haskell 수준 형식 유추가 없으므로 서명 형식이 여전히 필요합니다.
T f(T)(T a,T b){return a + b}
f(5);
다른 인수없이 객체에서 함수 호출
reverse(x);
거의 항상 단축 될 수 있습니다
x.reverse;
바이트 이상 면도
이는 .
LHS를 암시적인 첫 번째 인수로 만들고 템플릿을 사용하면 인수에 적합한 기능을 선택할 수 있기 때문 입니다.
x.reverse(y, z)
, 점 때문에 더 길다
x.reverse(y,z)
와 reverse(x,y,z)
동일한 바이트 수있다.
x.reverse(y, z)
하고 있었습니까 x.reverse
?