相关疑难解决方法(0)

寻求澄清关于弱类型语言的明显矛盾

我想我理解强类型,但每次我查找弱类型的例子时,我最终会找到编程语言的例子,这些语言只是自动强制/转换类型.

例如,在本文中名为Typing:Strong vs. Weak,Static vs. Dynamic表示Python是强类型的,因为如果你试图:

蟒蛇

1 + "1"
Traceback (most recent call last):
File "", line 1, in ? 
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Run Code Online (Sandbox Code Playgroud)

但是,在Java和C#中这样的事情是可能的,我们并不认为它们只是因为弱类型.

Java的

  int a = 10;
  String b = "b";
  String result = a + b;
  System.out.println(result);
Run Code Online (Sandbox Code Playgroud)

C#

int a = 10;
string b = "b";
string c = a + b;
Console.WriteLine(c);
Run Code Online (Sandbox Code Playgroud)

在另一篇名为Weakly Type Languages的文章中,作者说Perl是弱类型的,因为我可以将字符串连接到数字而反之亦然,而不进行任何显式转换.

Perl的

$a=10;
$b="a";
$c=$a.$b;
print $c; #10a
Run Code Online (Sandbox Code Playgroud)

所以同样的例子使得Perl弱类型,但不是Java和C#? …

c# python java perl weakly-typed

176
推荐指数
4
解决办法
1万
查看次数

JavaScript是一种无类型语言吗?

我发现有些人称JavaScript为"动态,弱类型"的语言,但有些人甚至说"无类型"?这到底是哪个?

javascript types

95
推荐指数
5
解决办法
6万
查看次数

C++:类特化是一个符合标准的编译器的有效转换?

希望这对StackOverflow的问题不太专业:如果是,可以在其他地方迁移,请告诉我......

很久以前,我写了一篇本科毕业论文提出了C++和相关语言的各种devirtualization技术,一般是根据代码路径(有点像模板)预编译专业化的想法,但与检查,以选择正确的专长是在情况下,运行时选择它们不能在编译时选择(因为模板必须是).

(非常)基本的想法类似于以下内容...假设你有一个类C如下的类:

class C : public SomeInterface
{
public:
    C(Foo * f) : _f(f) { }

    virtual void quack()
    {
        _f->bark();
    }

    virtual void moo()
    {
        quack(); // a virtual call on this because quack() might be overloaded
    }

    // lots more virtual functions that call virtual functions on *_f or this

private:
    Foo * const _f; // technically doesn't have to be const explicitly
                    // as long as it can be proven not be modified
}; …
Run Code Online (Sandbox Code Playgroud)

c++ compiler-construction virtual-functions vtable compiler-optimization

18
推荐指数
1
解决办法
379
查看次数

"无类型"是否与"动态类型"相同?

根据Advanced Bash-Scripting Guide,

  1. bash变量是无类型的:

    与许多其他编程语言不同,Bash不会通过"类型"来隔离其变量.本质上,Bash变量是字符串,但是,根据上下文,Bash允许算术运算和变量比较.决定因素是变量的值是否仅包含数字.

    该链接还给出了示例.

    "无类型"是否与编程语言中"动态类型"的概念相同?如果没有,两者之间的关系和差异是什么?

  2. 为了减轻在脚本中跟踪变量类型的负担,Bash确实允许声明变量.

    例如,将变量声明为整数类型by declare -i myvariable.

    这被称为"打字"变量吗?"打字"是否与"静态打字"的概念相同?

bash programming-languages

5
推荐指数
1
解决办法
444
查看次数

键入vs强烈键入C#

在C#中,有没有理由说强类型 vs只是打字?当有人说类型类时,我会想到除了对象之外的某种类型.几乎除了对象之外的所有内容都在C#中输入.

一旦定义了非对象的类,该类就是一种类型.它不再从那里输入.

顺便说一下,这不是关于类型安全性的问题(有效的内存访问和对象分配兼容性).

.net c#

3
推荐指数
1
解决办法
4321
查看次数