2014-12-03 2 views
2

온라인에서 찾은 통역사를 연장하려고합니다. 인터프리터는 숫자를 유일한 인수로 취해 문자열 (1 -> one, 2.3 -> two point three... 등)으로 반환합니다. 나는 'TIMES'와 'PLUS'와 같은 연산자 이름을 포함하도록 '언어'를 확장했습니다.숫자 인수를 취하여 형식을 유지합니까?

이제 내 문제가 있습니다. 이 연산자를 사용하기 위해서는 포함시켜야하는 유일한 방법은 숫자를 문자열로 전달하는 대신 인수를 인수로 전달하는 것입니다. 예를 들어, 내가 함수에 3*5-23.2을 전달해야한다면, three TIMES five MINUS twenty three point two을 반환하고 싶을 것입니다. 대신, 나는 이전 인수의 평가 된 형태 인 negative eight point two을 얻습니다.

인수를 조작하여 평가되기 전에 문자열이되는 방법이 있습니까? 또는 사용자가 문자열을 입력하도록 강요해야합니다 (나쁜 것입니까?)?

편집 1

내 코드는 콘솔 기반 코드입니다. 사용자가 지금처럼 액세스 : (기본값으로 시작하는 문자열을 것 같은)이이 <input> 요소에서 잡고 할 것 인 경우에

> wordify(34) 
"thirty four" 
> wordify(3.4) 
"three point four" 
> wordify(Math.PI) 
"three point one four one five nine two six..." // omitted for convenience 

, 나는 슬프게도,이는 등 많은 문제가없는 것 별로.

+0

우리는 약간의 코드를보아야합니다 : 인터프리터 (문제가있는 부분 일 수도 있음)와 이에 대한 확장 기능. 그렇지 않으면 우리는 문제를 해결하기 위해 할 수있는 일을 추측하고 있습니다. –

+0

'some_variable' 또는'Math.sqrt (4)'를 넘겨 준다고 가정하십시오. 어떻게해야합니까? – user2357112

+0

@ user2357112 some_variable이 문자열 인 경우 현재 코드는 "숫자가 아님"을 반환합니다. Math.sqrt (4)는 "two"를 반환합니다. –

답변

2

함수 호출을 수행하기 전에 모든 인수를 평가해야하기 때문에 함수에 문자열을 전달하는 것 외에 다른 방법은 없습니다. 문자열 입력이 나쁜 것으로 생각하는 이유는 무엇입니까? 값이 HTML 입력 필드에서 파생되면 명시 적으로 평가되지 않으면 항상 문자열입니다.

+0

그게 문제입니다. ''요소가 아닙니다. 그리고 그것을 문자열로 전달하는 것은 사용자에게 더 많은 타이핑을 의미 할 것입니다. –

+1

그래서 사용자는 프로그래머입니다. 맞습니까? 프로그래머는 함수 호출로 인해 모든 인수가 먼저 평가된다는 사실을 알고 있어야합니다. 이것이 스크립팅 및 프로그래밍 언어의 대부분에서 적용되는 기본 개념입니다. 두 개의 따옴표 사이에 입력을 넣는 것이 정말로 많은 작업입니까? –

+0

점 찍어 .. 고마워! –

관련 문제