コンテンツにスキップ

HyperTalk

Xuất điển: フリー bách khoa sự điển 『ウィキペディア ( Wikipedia ) 』
HyperTalk
パラダイム Thủ 続き hình,イベント駆 động hình
Đăng tràng thời kỳ 1987 niên(1987)
Thiết kế giả Dan Winkler
Khai phát giả Apple
Ảnh hưởng を thụ けた ngôn ngữ Tự nhiên ngôn ngữ,Pascal
Ảnh hưởng を dữ えた ngôn ngữ ActionScript,AppleScript,ECMAScript,JavaScript,Lingo(Anh ngữ bản),LiveCode,SenseTalk(Anh ngữ bản),SuperTalk(Anh ngữ bản)
テンプレートを biểu kỳ

HyperTalk( ハイパートーク ) はHyperCardに dụng いられるプログラミング ngôn ngữ.

Khái yếu

[Biên tập]

インタプリタPhương thức を thải dụng するスクリプト ngôn ngữで, その văn pháp は anh ngữ に cận く, sơ tâm giả にもなじみやすい.

HyperCardKhai phát チームのダン・ウィンクラーがデザインした. 拡 trương tính を khảo え,XCMD( ngoại bộ コマンド ) とXFCN( ngoại bộ quan sổ ) という cơ cấu も dụng ý され,プラグインĐích に cơ năng を truy gia khả năng である.

HyperCardがオブジェクト chỉ hướngHoàn cảnh の vi, それぞれのスクリプトは, HyperCardのスタック thượng のオブジェクトであるカードやボタン, フィールドなどのパーツ ( オブジェクト ) に phó tùy する.

Khái niệm

[Biên tập]
  • Nhất liên の処 lý は, スタック, バックグラウンド, カード, ボタン, フィールドのプロパティであるスクリプトに thư かれる.
  • 処 lý nội dung は,on « mệnh lệnh danh »end « mệnh lệnh danh »またはfunction « quan sổ danh »end « quan sổ danh »に hiệp まれた hành nội に ký thuật する. これらに hiệp まれていない nội dung は vô thị される ( văn pháp エラーになることもある ).
  • 処 lý を kỳ す hành は, tất ずMệnh lệnh(answer,go,putĐẳng ) かキーワード(if,repeat,doĐẳng ) で thủy まる.
    • Quan sổ や, 単なる sổ trị や văn tự liệt で văn を thủy めることはできない. この điểm, HyperTalkでは mệnh lệnh と quan sổ には minh xác な khu biệt が tồn tại する.
    • HyperTalkでいうキーワードは, đồng danh の mệnh lệnh や変 sổ を định nghĩa (オーバーライド) することができないDư ước ngữのこと. Chủ にChế ngự cấu tạoを kỳ すキーワードを văn đầu に trí くことができる. Tiên thuật のon,function,endもキーワードに cai đương する.
    • なお, tiên đầu にインデントを kỳ す không bạch を nhập れることは khả năng で, スクリプトエディタではifrepeatの thâm さに ứng じて tự động đích にインデントが挿 nhập される.
  • パラメータに đối する kế toán 処 lý (sin,max,randomĐẳng ) や, システムの trạng thái đẳng を thủ đắc する処 lý (time,date,systemVersionĐẳng ) をQuan sổと hô ぶ. Quan sổ はthe « quan sổ danh » of «パラメータ»または« quan sổ danh »(«パラメータ»)の hình で hô び, mệnh lệnh や quan sổ, キーワードのパラメータ nội で sử dụng することができる.
    • Tổ み込み quan sổ は lạng phương の ký pháp でコールできるが, tiền giả の phương が cao tốc である. Phi tổ み込み quan sổ は hậu giả の ký pháp でコールする tất yếu がある.
  • ボタンやフィールド, カード đẳng のオブジェクトが trì つ chúc tính (id,name,rectangle,locationĐẳng ) をプロパティと hô ぶ. プロパティを thiết định する tràng hợp はsetMệnh lệnh を dụng いる ( 変 canh bất khả のプロパティも tồn tại する ). プロパティを tham chiếu する tràng hợp はthe «プロパティ danh » of «オブジェクト danh, オブジェクトID đẳng »の hình で ký thuật し, quan sổ hô び xuất しに tự ている.
  • Trị を nội bộ に hàm むものをコンテナと hô ぶ. 変 sổ, メッセージボックス, ボタン, フィールドなどがコンテナに cai đương する.putMệnh lệnh によって trị を thiết định することができ, mệnh lệnh や quan sổ, キーワードのパラメータとして độ した tràng hợp は, コンテナ danh として ký tái した bộ phân が trị で trí き hoán えられる.
    • コンテナで bảo trì する trị にはHìnhは tồn tại せず ( văn tự liệt hình のみ ), toán thuật kế toán に sử dụng した tràng hợp は tự động đích に sổ trị に変 hoán され,ブール trịtrue,falseの văn tự liệt で tráp う.
  • 変 sổにはグローバル変 sổローカル変 sổがある. グローバル変 sổ として sử dụng する tiền にはglobalキーワードで tuyên ngôn する tất yếu がある. ローカル変 sổ には tuyên ngôn は tất yếu ない.
    • いずれも, trị を đại nhập する tràng hợp はputMệnh lệnh の trị の đại nhập tiên として chỉ định する. ただしit変 sổ はanswerMệnh lệnh やgetMệnh lệnh đẳng の kết quả の cách nạp tiên として ám mặc đích に sử dụng される.
  • Tha, văn pháp に quan する tế かい sĩ dạng
    • Hành の khu thiết り văn tự は cải hành である. 1つの処 lý を phục sổ hành で ký thuật したい tràng hợp は, hành mạt に~( チルダ ) を ký thuật する.
    • Đại văn tự と tiểu văn tự は khu biệt されない.on mouseUpOn MouseUpと ký thuật しても đồng じ động tác をする. また,"hypercard" = "HyperCard"の bình 価 trị はtrueである.
    • --から cải hành までは, コメントとして tráp われる.

Giản 単な lệ

onmouseUp
Beep
putsqrt(2+4)intocardfield"Kế toán kết quả"endmouseUp

この lệ は, このスクリプトが phó gia されているオブジェクト ( パーツ ) の thượng で, マウスがクリックされたら,ビープ âmを minh らし, 2と4を gia えた kết quả の bình phương căn を, このオブジェクトが thừa っているカードに tồn tại する『 kế toán kết quả 』という danh のフィールドに tống る. mouseUpとなっているのは, マウスクリックのチャタリングを phòng chỉ するために, クリック hậu のアップを thủ り xuất している.

Tha ngôn ngữ との bỉ giác

[Biên tập]

C ngôn ngữ との bỉ giác

[Biên tập]

ここでは, sơ tâm giả が sơ めて học ぶ ngôn ngữ として quảng く tẩm thấu しているC ngôn ngữを lệ に bỉ giác する.

  • C ngôn ngữ は văn chương の khu thiết りとしてセミコロンを sử い, bỉ giác đích tự do な biểu ký が khả năng であるが, スクリプト ngôn ngữ であるHyperTalkは cải hành が văn chương の khu thiết りとなるため, văn chương の đồ trung で cải hành するとエラーになる. Lệ えば “put" Hello, World! "into A” と biểu ký すべきところを “put" Hello, ( cải hành ) World! "into A” と biểu ký するとエラーになる.
  • 変 sổ tuyên ngôn や quan sổ tuyên ngôn が bất yếu であり, また đại nhập する trị ( chỉnh sổ, tiểu sổ, văn tự liệt ) を ý thức せずに変 sổ に đại nhập できる.
    • Lệ えばAという変 sổ に “10”という chỉnh sổ が nhập っていたとしても, tân たに tuyên ngôn することなく “0.5”という tiểu sổ や “ten”という văn tự liệt を nhập れることが xuất lai る.
    • ただし, văn tự ( liệt ) が nhập った変 sổ に chỉnh sổ を gia toán する…といった động tác はエラーとなり động かないため chú ý が tất yếu である. Thượng, văn tự liệt と văn tự liệt, もしくは văn tự liệt と sổ trị を繋げる ký hào は “&” である.
    • また, sổ trị gian での hình vi い ( chỉnh sổ, tiểu sổ, phù hào phó き・ vô し ) が vô いため, lệ えば, “0.5*4” “0.5+1.5” といった tiểu sổ を nguyên にした kế toán でも, kết quả が chỉnh sổ となる vật は cường chế đích に chỉnh sổ となり ( tiểu sổ điểm dĩ hạ が vô くなった trạng thái で ) đại nhập される. Nhất phương, C ngôn ngữ では tối も thượng vị の hình に変 hoán され, tối chung đích に đại nhập する変 sổ の hình で quyết định される. このため, lệ えば “float hình = double hình *int hình” といった tràng hợp は tối chung đích にfloat hình に hoàn められた trị が đại nhập される ( tường しくはHình 変 hoánを tham chiếu ).
    • 変 sổ の thích dụng phạm 囲もC ngôn ngữ とほぼ đồng じで, lệ えばある quan sổ で sử われた変 sổ は hô び xuất した biệt の quan sổ では thích dụng されない. ただし, グローバル変 sổ はこの hạn りではない.
  • 変 sổ の đại nhập ・ thủ り xuất しに quan しては toàn て “put” mệnh lệnh を sử うことになる.
    • Lệ えばC ngôn ngữ での “A = B+C”をHyperTalkで thư くと “put B+C into A”となり, C ngôn ngữ とは thuận tự が nghịch になる.
    • また, “put” はinto dĩ hạ を chỉ định しなければ tiêu chuẩn xuất lực (メッセージボックスと hô ばれる tiểu さい văn tự liệt biểu kỳ dụng のウィンドウ ) へ xuất lực するほか, フィールド đẳng へオブジェクトへの đại nhập も khả năng ( tường しくはHyperCardを tham chiếu ).
    • ちなみに “=” はHyperTalk thượng ではĐẳng hàoの ý vị を trì ち, đại nhập には sử えない ( C ngôn ngữ での “==” に tương đương ).
  • Ký hào を sử った diễn toán tử の đa くが, より trực cảm đích な biểu ký や anh 単 ngữ に trí き hoán えられている.
    • Lệ えば, C ngôn ngữ における “%” “!” “&&” “||” は, HyperTalkでは “mod” “not” “and” “or” に đối ứng する.
    • ビット diễn toán tử, アドレス diễn toán tử đẳng は nhất thiết tồn tại しない.
  • Phối liệtの khái niệm が tồn tại しないが,Văn tiết( word ),Hành( line ),ある nhậm ý( tiêu chuẩn ではカンマ(,)であるがスクリプト nội で変 canh khả năng )の văn tự( item ),Văn tự 単 vị( char ) での khu thiết りで đại nhập ・ thủ り xuất しが tiêu chuẩn で khả năng である. ただし, nhật bổn ngữ に quan する “word” の処 lý に quan しては động tác がアバウトであるため, カンマで khu thiết って “item” を sử い処 lý することが vọng ましい.
    • これを sử うことによって phối liệt と đồng じような処 lý を hành える. Lệ えば, thứ の nhị つのコードはほぼ đồng dạng の処 lý をしている ( tiện nghi thượng “main()” や “on openstack” を tỉnh lược する ).

HyperTalk

put"10,20,30,40"&return&"100,200,300,400"intoarray-- “&return&” は cải hành を ý vị する
putitem2ofline1ofarray+item2ofline2ofarrayintoA
answer"A="&A-- “A=220” とダイアログに biểu kỳ

C ngôn ngữ

intA,array[][]={{10,20,30,40},{100,200,300,400}};
A=array[0][1]+array[1][1];
printf("A=%d",A);

また, C ngôn ngữ よりも bỉ giác đích tự do に văn tự liệt 処 lý が khả năng である.

put"ABC,DEF,GHI"&return&"GHI,DEF,ABC"intoarray
putitem2ofline1ofarray&item2ofline2ofarrayintoA
answerA-- “DEFDEF” とダイアログに biểu kỳ
  • C ngôn ngữ はポインタを sử ったメモリの động đích cát り đương てやシフト diễn toán といったハードウェアレベルでのアクセスが khả năng であるが, ( スクリプト ngôn ngữ であることも quan hệ しているが ) HyperTalkはそういった処 lý は tiêu chuẩn では bất khả năng である.
    • ただし, サウンド処 lý や họa tượng 処 lý などOSレベルにアクセスする処 lý については tiền thuật のXCMDやXFCNを sử えば khả năng である.
  • そのほか, sào り phản しや điều kiện phân kỳ においてはC ngôn ngữ とほぼ đồng じ処 lý が khả năng である.
    • Lệ えば, sào り phản しに quan してはC ngôn ngữ での “while(1){~}”( vô hạn ループ ) は “repeat ~ end repeat”,“for(i=1;i<=10;i++){~}”は “repeat with i = 1 to 10 ~ end repeat”という phong に, điều kiện phân kỳ は “if(i==10){~}”は “if i=10 then ~ end if”という phong に ký thuật すれば đồng dạng の処 lý が khả năng.

Javaとの bỉ giác

[Biên tập]

Thứ に, đại biểu đích なオブジェクト chỉ hướng ngôn ngữであるJavaを lệ に bỉ giác する.

  • ボタン, フィールド, カード đẳng はオブジェクト đích な tính chất を trì つ.
    • プロパティ ( chúc tính ) を trì つ. プロパティに trị を thiết định するには “set” mệnh lệnh を sử dụng する.
    • マウスやキーボード đẳng によるイベントを thụ け thủ る. Tiên thuật の “on mouseUp” ~ “end mouseUp” nội に処 lý nội dung を ký thuật したスクリプトは, マウスが ly されたイベントを thụ け thủ る lệ である.
  • “クラス” “インスタンス” “継 thừa” đẳng の, đa くのオブジェクト chỉ hướng ngôn ngữ に tồn tại する khái niệm は, HyperTalkでは tồn tại しない.
    • Độc tự のクラスを tác thành することはできない. クラスを tuyên ngôn する cấu văn そのものが tồn tại しない.
    • “ボタン” をクラス, “カード thượng に tác thành したボタンのうち1つ” をインスタンスと khảo えることはできるが, HyperTalkではそのような hô び phương はしない.
  • ポインタ hình が tồn tại しないため, カード thượng, またはバックグラウンド thượng のボタンやフィールドを tham chiếu するには, オブジェクト danh, オブジェクト phiên hào, オブジェクトIDを lợi dụng することになる.

HyperTalk

puthighlightofcardbutton"I Agreed"intoagreed
setenabledofcardbutton"OK"toagreed

Java

booleanagreed=agreedCheckBox.getState();// agreedCheckBox, okButton に trị が nhập っているとする
okButton.setEnabled(agreed);