Что такое строго типизированный язык? [дубликат]

Вы довольно близки, но похоже, что вам не хватает функции setState из реакции. Например.

handleCourseChange = (value) => {
    this.selectCourseValue = value
    console.log(this.selectCourseValue)
}

станет

handleCourseChange = (value) => {
    this.setState({ selectCourseValue: value })
    console.log(this.state.selectCourseValue)
}

Для получения дополнительной информации о setState, посмотрите официальную документацию реагирования: https://reactjs.org/docs/react-component .html # SetState

9
задан Fund Monica's Lawsuit 19 May 2016 в 01:15
поделиться

5 ответов

I tried to look up "strict typing" and wasn't able to find a definitive definition for the term. Perhaps it refers to a strongly typed language?

Strong typing refers to a type system in which there are restrictions to the operation on which two variables of different types can be performed. For example, in a very strongly typed language, trying to add a string and number may lead to an error.

string s;
number n;
s + n;          <-- Type error.

The error may occur at compile time for statically typed languages or at runtime for dynamically typed languages. It should be noted that static/dynamic and strong/weak may sound like similar concepts, they are quite different.

A less strongly typed language may allow casting of variables to allow operations between variables originating from different types:

s + (string)n;  <-- Allowed, as (number) has been explicitly
                    casted to (string), so variable types match.

In a weakly typed language, variables of differing types may become automatically casted to compatible types.

s + n;          <-- Allowed, where the language will cast
                    the (number) to (string)

Perhaps, the "strictly typed language" refers to a very strongly typed language in which there are more strict restrictions as to how operations can be performed on variables of different types.

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

Существуют различные мнения о сильных или слабых системах различного типа , но я обычно слышал, что «строго типизированный язык программирования» означает очень ] строго типизированный язык программирования . Это часто описывает статические системы типов, встречающиеся в нескольких функциональных языках.

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

Языки, в которых переменные должны объявляться как содержащие определенный тип данных.

Если объявления переменных выглядят следующим образом:

String myString = "Fred";

, то ваш язык строго типизирован, переменная «myString» явно объявляется содержащим только строковые данные.

Если следующее работает:

x = 10;
x = "Fred";

, то оно свободно напечатано (два разных типа данных в одной переменной и области действия).

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

языки, где '1' + 3 будет недопустимым, потому что это добавление строка в целое число.

0
ответ дан 4 December 2019 в 08:34
поделиться

Строго типизированные языки обеспечивают типизацию для всех взаимодействующих данных.

Например,

int i = 3
string s = "4"

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

Что касается строки s, вы можете взаимодействовать с ней только как строковый тип. Вы можете объединить его с другой строкой, распечатать и т. Д. Однако, даже если он содержит этот символ «4», вы не можете добавить к целому числу, не используя какую-либо функцию для преобразования строки в целочисленный тип.

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

i = 3
s = "4"

Типы выводятся; Это означает, что они определяются на основе данных, которые они установлены. i - это тип числа, а s - тип строки, основанный на том, как они были заданы. Однако, когда у вас есть I + S; используется вывод типа, и в зависимости от вашей среды вы можете получить результат i + s = 7; поскольку s была неявно преобразована в int средой программирования. Однако эта операция может также привести к строке «34», если среда выводит, что строка int + должна совпадать с операцией конкатенации и операцией сложения.

Эта гибкость сделала языки со свободной типизацией очень популярными. Тем не менее, потому что этот тип вывода иногда может привести к неожиданным результатам; они также могут привести к большему количеству ошибок в вашем коде, если вы не будете осторожны. В типизированном языке, если я выполняю i + s, компилятор заставляет меня сначала преобразовать s в int, поэтому я знаю, что, добавив i к s, я получу 7, потому что я был вынужден преобразовать s в явный int первый. На динамическом языке он пытается сделать это для вас неявно, но результаты могут быть не такими, как вы ожидали, поскольку все может быть в i или s; строка, число или даже объект. Вы не знаете, пока не запустите свой код и не увидите, что происходит.

16
ответ дан 4 December 2019 в 08:34
поделиться
Другие вопросы по тегам:

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