ADA

2014-12-13 6 views
-3

두 값을 인쇄하는 방법을 어떻게 ADA에서 두 개의 값을 출력하기 위해 아래의 내 코드는 두 가지 파일을 하나 개의 광고 (사양) 즉 try.ads 및 예 main.adbADA

시도는 다른 주요 파일이 말할 수 있습니다. "안녕하세요"문자열은 "Useme"패키지에 정의되어 있지 않기 때문에 광고

package try is 
    type My_limit is range 0..31; 
    package Useme is new ada.Text_IO.Integer_IO(My_limit); 
    end try; 

main.adb

with try 
    procedure main is 
    demo:try.rt_adrr:=3; 
begin 
    try.Useme.put("hello" & try.rt_addr); -- error is Missing arguement for parameter "item" call to "put" 
    end main; 

내가 오류로 인해입니다 알고있다 "try.useme.put"그래서 저를 도와주세요 나는이 단일 인쇄 안녕하세요와 3 모두에서 인쇄하고 싶습니다. ?

+0

그것은 당신이 게시 한 코드가 거의 시작하지 수 있기 때문에 당신을 도와 어려운 사용하는 것입니다 컴파일 할 때 오류가 너무 많습니다. ** 우리는 컴파일 할 수있는 코드가 필요합니다 ** 또는 적어도 시도하십시오. –

+0

질문에있는 코드는 해당 오류 메시지를 생성하지 않습니다. 질문을 업데이트하십시오. 컴파일러에 제공하는 * exact * 코드를 복사하여 붙여 넣으십시오. –

답변

0

다른 오류가 있습니다 (나는 try.rt_addr 또는 try.rt_adrr이 무엇인지 잘 모르며 Ada는 같은 이름의 철자에 대해 용서할 수 없습니다).

그러나 내가 생각하는 대답은 주된 질문입니다. 일부 언어에서 허용하는 방식으로 문자열과 정수 (또는 다른 숫자 유형)를 연결할 수 없습니다. rt_addr는 정수 경우,이 표현은 어디 법적되지 않습니다 :

"hello" & rt_addr 

당신이 String 매개 변수와 Integer 매개 변수를 사용하고 (아마)를 String을 반환 자신의 "&"을 정의하지 않았다면. 나는 이것을 한 것을 보았습니다, 그러나 나는 이것을 성취하는 것이 보통의 방법이라고 믿지 않습니다. 당신이 당신의 Useme 출력 정수와 같은 패키지가 가정

모두 출력 일반적인 방법은, 하나 이상의 put

Ada.Text_IO.Put("Hello"); 
Try.Useme.Put(rt_addr); 
+0

기본 포맷팅을 받아 들일 수 없다면 나는 보통 "hello"& Integer'Image (Rt_Addr)'또는 GNAT-ism''hello "& Rt_Addr'Img'을 사용합니다. –

+0

@SimonWright 맞아, 'Put'을 사용하면 더 많은 서식 옵션이 제공됩니다. – ajb