0

私はこれが現時点で完全にばかげているように聞こえることを知っていますが、私を信じてください.phpの「$ variable」またはgroovyの「def」のようなものが必要です。私のアプローチは、C言語に実装する自動変数「データ型」識別です。

例えば:

「def」は型名の代わりです。変数定義では、型を気にしないことを示すために使用されます。変数定義では、型名を明示的に指定するか、代わりに「def」を使用することが必須です。これは、変数定義を Groovy パーサーで検出可能にするために必要です。

def dynamic  =  1
dynamic = "I am a String stored in a variable of dynamic type"

また

文字列を含む変数と数値を含む変数を作成してみましょう。

<?php
$txt="Hello World!";
$x=16;
?>

PHP は緩やかに型付けされた言語です PHP では、値を追加する前に変数を宣言する必要はありません。 上記の例では、変数のデータ型を PHP に伝える必要がないことがわかります。 PHP は、変数の値に応じて、変数を正しいデータ型に自動的に変換します。 厳密に型指定されたプログラミング言語では、変数を使用する前に変数の型と名前を宣言 (定義) する必要があります。

4

3 に答える 3

2

静的に型付けされた言語で動的型付けを求めています。C には動的型付けも型推論もないため、これは存在しません。C を使用してタグ付き型システムを実装することは十分に可能です。これは、Python、PHP、Perl などの C インタープリターを使用する何百もの言語によって行われますが、C に関する限り、すべてはまだ静的に型付けされています。ただし、実際のデータを変換せずにポインターをキャストできるため、C は厳密に型指定されているわけではありません。

C に似ていて、機械語にコンパイルされ、型推論が可能な言語が必要な場合は、auto キーワードを再解釈したD があります。

于 2010-07-24T04:59:40.843 に答える
1

C でやりたいことを行う方法はありません。変数を宣言する前に変数の型を知る必要があり、変数を使用する前に変数を宣言する必要があります。

于 2010-07-24T04:49:55.193 に答える
0

基本的に、C でこれを行うべきではありません。しかし、私が理解していることから、必要に応じて、変数を void* として宣言することで可能です。使用するには、適切なデータ型にキャストし直す必要があります。私が C を書いてから少し時間が経ったので、以下は 100% 正しい構文ではないかもしれませんが、次のようなことができます:

void* variable = "12345";
printf((char*) variable);

このアプローチの欠点は、正しい型にキャストし直すために変数が実際にどのような型であるかを知る必要があり、それを間違えるとアプリケーションがクラッシュすることです。私が理解していることから、Objective-C の id 型は基本的に void* 型といくつかのランタイム型情報を含む構造体ですが、Objective-C クラスのみを指すことができるため、キャストは安全です。

于 2010-07-28T14:05:58.203 に答える