Лучшее слово для выведения переменных кроме [закрытого] var

Вот то, как я делаю его..., так как разделение ищет массив символа, я вырезаю первое значение в своей строке.

var values = labels.Split(" "[0]).ToList<string>();
10
задан 6 revs, 4 users 65% 20 November 2012 в 18:35
поделиться

12 ответов

C ++ 0x использует ключевое слово «auto» для вывода типа:

http://en.wikipedia.org/wiki/C%2B%2B0x#Type_inference

Это неплохой компромисс для этих парней, так как "авто" (AFAIK) уже было ключевым словом. Я могу представить это на C #:

auto i = 3;

Мне нравится "infer" (но тогда у меня нет проблем и с "var").

7
ответ дан 3 December 2019 в 18:00
поделиться
thisappearsweaklytypedbutisactuallystronglytyped i = 3;

Это единственный способ избежать путаницы! Не волнуйтесь, автозаполнение означает, что на самом деле набрать не так много времени ...

4
ответ дан 3 December 2019 в 18:00
поделиться

Как насчет того, чтобы оживить старое BASIC ключевое слово LET ?

let answer = 42;
3
ответ дан 3 December 2019 в 18:00
поделиться

Думаю, это отличная идея. Мне самому время от времени приходилось объяснять ключевое слово var и то, что оно на самом деле является просто заполнителем для типа и по-прежнему обеспечивает строгую типизацию.

infer у меня работает! :)

1
ответ дан 3 December 2019 в 18:00
поделиться

То, что вы хотите сделать, невозможно. Возьмем, к примеру, выглядит ли приведенный ниже код допустимым:

class Test(object):

    def _decorator(self, foo):
        foo()

    def bar(self):
        pass
    bar = self._decorator(bar)

Он, конечно, недействителен, поскольку self не определен в этой точке. То же самое касается Test , поскольку он не будет определен, пока не будет определен сам класс (который находится в процессе). Я показываю вам этот фрагмент кода, потому что это то, во что преобразуется ваш фрагмент декоратора.

Итак, как вы можете видеть, доступ к экземпляру в таком декораторе не является

2
ответ дан 3 December 2019 в 18:00
поделиться

Как насчет foo ?

1
ответ дан 3 December 2019 в 18:00
поделиться

C # должен быть символическим, как C ++, а не только ключевым словом, как VB. Как насчет «? »

? X = 5;
? Y = X.ToString();
? Z = Y + Y;

Какой тип Z? Кто знает?

1
ответ дан 3 December 2019 в 18:00
поделиться

С другой стороны, программисты на Pascal / Delphi и ActionScript сразу же понимают истинный смысл var . Так зачем выделять VB6? Очень жаль, что в нем был вариант , поэтому ребята из VB6 быстро заменили его на var , но независимо от того, каким путем вы пойдете, кто-то где-то запутается.

Учитывая что VB6 уже давно унаследован, что var совершенно ясно кому-то без бремени прошлого опыта (я имею в виду, сколько людей, новичков в программировании, подумают о var означает что-то отличное от «переменной»?), и что var специально используется для обозначения «переменной» в нескольких других популярных языках, это не кажется плохим выбором.

Очевидная проблема, которую я вижу с заданным ключевым словом infer , заключается в том, что неочевидно, что оно определяет тип переменной. Просто глядя на него, можно было бы сделать вывод о его ценности или что-то в этом роде (особенно если RHS не является новым -заявлением).

1
ответ дан 3 December 2019 в 18:00
поделиться

Мне нравится var , и я думаю, что смысл в контексте строго типизированного языка ясен. dynamic , с другой стороны, является «чудаком» в коде C #, поэтому более длинное семантическое именование подходит.

1
ответ дан 3 December 2019 в 18:00
поделиться

Я думаю, что C # был бы лучше вообще без ключевого слова "статический вывод типа". Итак, это будет работать следующим образом:

myDict = new Dictionary<string, MyClass>();

Мне было интересно, почему дизайнеры C # посчитали, что ключевое слово вроде «var» необходимо для вывода статического типа. Было ли необходимо соблюдать фундаментальные правила грамматики C #? Было ли это потому, что они уже думали о «динамическом» и хотели сделать более ясным различие между статическим и динамическим выводом типов?

В любом случае, после некоторого длительного знакомства с Python, «var» (или любое альтернативное ключевое слово или квалификатор) ) кажется совершенно излишним. Возьмите следующий код:

foreach ( item in myList ) {
    // Do stuff
}

Какую дополнительную информацию добавление «var» перед «item» даст читателю?

1
ответ дан 3 December 2019 в 18:00
поделиться

Если ключевое слово было названо переменная вместо var , то мы не увидим такой путаницы. Возможно, это и было намерением, но кто-то явно подумал, что ввод переменной был слишком многословным, что привело к неоднозначности, которую мы имеем сегодня.

0
ответ дан 3 December 2019 в 18:00
поделиться

Не совсем по теме, но VB.NET делает это слишком чисто. Бьюсь об заклад, это еще больше сбивает с толку бывших пользователей VB6.

Dim p = New Person()

Используется ли здесь позднее связывание или вывод типа? Лучше проверьте свойства своего проекта.

0
ответ дан 3 December 2019 в 18:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: