Difference between revisions of "Turtle.forward"

From ComputerCraft Wiki
Jump to: navigation, search
(Undo revision 2998 by 93.181.50.57 (talk))
(CETHXYvF)
Line 1: Line 1:
{{Function
+
admin가 말하길문과 식에 차이랍니다.문이란 statement라고 하는데 말하자면 양념입니다. 식은 exirosspen이라고 하는데 이는 주인공입니다.if, for, while과 같은 문은 결국 식을 조직화하고 원하는 방향으로 사용하기 위한 보조입니다. 진짜 주인공-메모리에 값을 넣거나 읽어드리는-인 식이 핵심적인 알고리즘이죠.if구문은 문으로서 처리되는 반면 삼항연산자는 식으로 평가됩니다. 즉 삼항연산자의 결과는 값이 됩니다. 하지만 if구문의 결과는 없습니다. if구문을 통해 내부의 식을 실행시키는게 목표죠. 따라서 이 둘을 혼용해서는 안됩니다.참고로 루비 등의 근대적인 완전 함수 철학을 도입한 언어의 경우는 모든 문이 식으로 처리하게 만드는 경우도 많습니다.이론은 이정도로 하고 간단히 말해 o?{}:n++은 내부적으로 더 많은 식을 요구합니다.var result:*;result = o ? {} : n++;로 식의 결과를 받기 위한 지역변수와 할당을 자동으로 컴파일러가 추가하게 되며 참인 경우도 아무일도 하지 않는것이 아니라 {}를 통해 스택구역을 하나 더 생성하게 됩니다.따라서 위의 if가 문으로 작동하여 n++라는 식을 하나 처리한것보다 훨씬 많은 일을 하게 되죠.
|name=turtle.forward
+
|api=turtle
+
|returns=[[boolean]] whether the turtle succeeded in moving forward
+
|addon=ComputerCraft
+
|desc=Attempts to move the turtle forward.
+
|examples=
+
{{Example
+
|desc=Tries to move the turtle forward and outputs whether it worked or not.
+
|code=if turtle.forward() then
+
  [[print]] ("Turtle moved forward.")
+
else
+
  [[print]] ("Turtle didn't move forward.")
+
end
+
|output= Turtle moved forward. or Turtle didn't move forward.
+
}}
+
{{Example
+
|desc=Tries to move the turtle forward x number of times. X is specified by the user and if the turtle can't move forward it will break the block infront of it.
+
|code=Arg = (...) -- gets the parameters from the user
+
if Arg ~= nil then
+
  Arg = [[tonumber]] (Arg) -- make it a number
+
  a = 1
+
  while a <= Arg do
+
  if not turtle.forward() then
+
    [[turtle.dig]]()
+
    turtle.forward()
+
  end
+
  a = a + 1
+
  end
+
else
+
  [[print]] ("Missing parameter.")
+
end
+
|output= Either the turtle moving the specified amount of times or missing parameter.
+
}}
+
{{Example
+
|desc=Digs until the turtle can move forward.
+
|code=while not turtle.forward() do
+
  [[turtle.dig]]()
+
end
+
|output= The turtle moves forward.
+
}}
+
}}
+

Revision as of 03:08, 21 September 2012

admin가 말하길문과 식에 차이랍니다.문이란 statement라고 하는데 말하자면 양념입니다. 식은 exirosspen이라고 하는데 이는 주인공입니다.if, for, while과 같은 문은 결국 식을 조직화하고 원하는 방향으로 사용하기 위한 보조입니다. 진짜 주인공-메모리에 값을 넣거나 읽어드리는-인 식이 핵심적인 알고리즘이죠.if구문은 문으로서 처리되는 반면 삼항연산자는 식으로 평가됩니다. 즉 삼항연산자의 결과는 값이 됩니다. 하지만 if구문의 결과는 없습니다. if구문을 통해 내부의 식을 실행시키는게 목표죠. 따라서 이 둘을 혼용해서는 안됩니다.참고로 루비 등의 근대적인 완전 함수 철학을 도입한 언어의 경우는 모든 문이 식으로 처리하게 만드는 경우도 많습니다.이론은 이정도로 하고 간단히 말해 o?{}:n++은 내부적으로 더 많은 식을 요구합니다.var result:*;result = o ? {} : n++;로 식의 결과를 받기 위한 지역변수와 할당을 자동으로 컴파일러가 추가하게 되며 참인 경우도 아무일도 하지 않는것이 아니라 {}를 통해 스택구역을 하나 더 생성하게 됩니다.따라서 위의 if가 문으로 작동하여 n++라는 식을 하나 처리한것보다 훨씬 많은 일을 하게 되죠.