Groovy "Def" декларации переводит на язык C? - PullRequest
0 голосов
/ 24 июля 2010

я знаю, что в данный момент это звучит совершенно нелепо, но поверьте мне, я хочу что-то вроде «$ variable» в php или «def» в groovy, с помощью моего подхода это автоматическая идентификация переменной типа «data» для IMPLEMENT на язык 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 автоматически преобразует переменную в правильный тип данных, в зависимости от ее значения. В строго типизированном языке программирования вы должны объявить (определите) тип и имя переменной перед ее использованием.

Ответы [ 3 ]

2 голосов
/ 24 июля 2010

Вы запрашиваете динамическую типизацию на языке статической типизации. C не имеет ни динамической типизации, ни вывода типов, поэтому его не существует. Вполне возможно реализовать систему теговых типов с использованием C, и это делается сотнями языков с интерпретаторами C, такими как Python, PHP, Perl и т. Д., Но что касается C, все по-прежнему статически типизировано. Однако C не так уж сильно типизирован, так как вы можете использовать указатели без преобразования фактических данных.

Если вам нужен язык, который похож на C, компилируется в машинный код и имеет вывод типа, есть D с его реинтерпретацией ключевого слова auto .

1 голос
/ 24 июля 2010

Нет способа сделать то, что вы хотите в C. Вы должны знать тип переменной, прежде чем объявить ее, и вам нужно объявить переменную, прежде чем использовать ее.

0 голосов
/ 28 июля 2010

По сути, вы не должны делать это в C. Но, насколько я понимаю, если вы хотите, вы можете объявить вашу переменную как void *.Вам нужно будет привести его обратно к соответствующему типу данных, чтобы использовать его.Прошло немного времени с тех пор, как я написал C, поэтому следующий синтаксис может быть не на 100% правильным, но вы можете сделать что-то вроде этого:

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

Недостатком этого подхода является то, что вам нужно знать, какой типПеременная действительно должна привести его к правильному типу, и если вы ошибетесь, ваше приложение рухнет.Из того, что я понимаю, тип id в Objective-C - это в основном структура, которая включает тип void * и некоторую информацию о типе среды выполнения, но она может указывать только на классы target-c, поэтому приведение будет безопасным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...