作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
“可选类型”有什么特别之处?
人们非常热衷于 Dart 支持“可选类型”,但是一旦一种语言支持鸭子类型(duck typing)——我就不能认为可选类型是理所当然的吗?不是很明显的特点吗?
最佳答案
当您指定类型注释时,您将信息传递给其他开发人员和工具。
考虑这个(相当长的)两个函数的例子——第一个没有类型信息,第二个有类型信息:
createConnection(details) {
var foo = details.host; // assume details has a host property
// do stuff
return connection;
}
Connection createConnection(ConnectionParams details) {
var foo = details.host; // tools can validate that details has a host property
// do stuff
return connection;
}
host
的内容。 field 。您还需要知道该函数返回
Connection
对象,而不是字符串或其他东西。
ConnectionParams
定义的接口(interface)的对象。 , 你知道
Connection
返回对象。
class MySqlConn {
String host;
}
class PostgreSqlConn {
String host;
}
// elsewhere
var conn = new MySqlConn()..host = '127.0.0.1';
createConnection(conn);
host
.
createConnection()
。功能(工具也很难理解这一点)。我无法为
createConnection
创建 API 文档链接回这两个类的函数。
// define an interface
abstract class ConnectionParams {
String host;
}
// inform tools and humans that MySqlConn implements the interface
class MySqlConn implements ConnectionParams {
String host;
}
class PostgreSqlConn implements ConnectionParams {
String host;
}
createConnection
开始在静态代码中形成链接。函数返回到类,最终返回到接口(interface)。对于第一个示例,该链接仅在运行时创建。
关于dart - dart 中的可选类型有什么特别之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17604180/
我已经可以在其中输入一些附加文本了mydomain/wiki/Special:UserLogin。我添加了一句话: In order to apply for an account send an m
有人可以解释以下脚本输出背后的逻辑吗? import numpy if(numpy.dtype(numpy.float64) == None): print "Surprise!!!!" 谢谢
是我还是 gmail bulls**t?在 outlook/浏览器上,我的电子邮件是完美的,但在 gmail 上,2 个表之间有一个空间,为什么?!?图片:http://i.imgur.com/srJ
我是一名优秀的程序员,十分优秀!