问题标签 [static-typing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 为什么 C# 是静态类型的?
我是一名尝试学习 C# 的 PHP Web 程序员。
我想知道为什么 C# 要求我在创建变量时指定数据类型。
为什么我们需要在类实例之前知道数据类型?
refactoring - 静态/强类型和重构
在我看来,静态/强类型编程语言最宝贵的地方在于它有助于重构:如果/当您更改任何 API 时,编译器会告诉您该更改破坏了什么。
我可以想象用运行时/弱类型语言编写代码……但我无法想象没有编译器的帮助就进行重构,也无法想象在没有重构的情况下编写数万行代码。
这是真的?
sql - sqlite 的清单类型何时有用?
sqlite 使用了作者称之为“ Manifest Typing ”的东西,这基本上意味着 sqlite 是动态类型的:如果需要,您可以将 varchar 值存储在“int”列中。
这是一个有趣的设计决定,但是每当我使用 sqlite 时,我都会像使用标准 RDMS 一样使用它,并将类型视为静态的。事实上,在其他系统中设计数据库时,我什至从未希望使用动态类型的列。
那么,这个功能什么时候有用呢?有没有人在实践中发现了它的一个很好的用途,而静态类型的列却无法做到这一点?
f# - F# 和运算符重载:(>) 和 (^)
好的,有人可以向我解释为什么 F# 允许您重载 > 和 ^ 运算符,但不允许您使用它们吗?
如果我将我的 F# 代码编译为库并使用 VB 中的这些运算符,它们都可以工作。如果我使用 C# 中的这些运算符,除了 op_Concatenate 之外的所有运算符都可以工作(如预期的那样)。但是 F# 不仅忽略了其中的一些,静态类型检查器甚至都懒得告诉你它打算这样做。
编辑代码示例
c# - 将类型分配给变量,将变量与通用静态类一起使用
我正在使用带有类型的通用静态类的 C# Web 服务。我想知道为什么这不能编译:
它给出了这个错误:
找不到类型或命名空间名称“type1”(您是否缺少 using 指令或程序集引用?)
当我将鼠标悬停type1
在第二行代码中时,ReSharper 会显示“需要类型或命名空间名称”。嗯,type1
是一种类型!这是一个类型的变量Type
!如果我这样做,它也不起作用:
我希望将我的类型分配给几个不同的Type
变量,并仅在测试不同的通用静态类时使用它们,而不是MySnazzyType
每次都输入。任何想法,或者我坚持做:
编辑:澄清一下,MySnazzyType
不是泛型类,也不是从泛型类继承。这里唯一的通用类是ConnectionPool_Accessor
.
感谢 Pavel 的评论“本质上,您的问题是 C# 是一种静态类型语言”,我现在知道 Ruby 已经宠坏了我。;)
python - Python 3 和静态类型
我并没有像我希望的那样真正关注 Python 3 的开发,只是注意到了一些有趣的新语法变化。具体来自这个 SO answer function 参数注释:
对此一无所知,我认为它可以用于在 Python 中实现静态类型!
经过一番搜索,似乎有很多关于 Python 中(完全可选的)静态类型的讨论,例如PEP 3107和“向 Python 添加可选静态类型”(和第 2 部分)中提到的那些
..但是,我不清楚这进展了多远。是否有任何静态类型的实现,使用参数注释?是否有任何参数化类型的想法进入 Python 3?
language-design - 为什么动态类型经常与解释语言相关联?
简单的问题:我用 C++/Java 等编译语言和 Python/Javascript 等解释语言做了很多编程(专业和个人)。我个人发现,当我使用静态类型语言进行编程时,我的代码几乎总是更加健壮。但是,我遇到的几乎所有解释语言都使用动态类型(PHP、Perl、Python 等)。我知道为什么编译语言使用静态类型(大部分时间),但我无法弄清楚解释语言设计中对静态类型的厌恶。
为什么陡峭的断开连接?它是解释语言本质的一部分吗?哎呀?
programming-languages - 静态类型语言和动态类型语言有什么区别?
我经常听到新的编程语言是动态类型的,但是当我们说一种语言是动态类型的还是静态类型的时,这实际上意味着什么?
programming-languages - 静态类型如何限制宏?
我正在阅读 Paul Graham 的“百年语言”一文。
http://www.paulgraham.com/hundred.html
在那里,他声称静态类型“排除了真正的宏”。
例如,类型似乎是研究论文的取之不尽的来源,尽管静态类型似乎排除了真正的宏——在我看来,没有它,任何语言都不值得使用。
这是真的吗?论文在哪里?我尝试在 Google 上搜索但没有成功。