玩高级类型系统的东西。我希望有两个类型构造函数的名字,它们产生了这类类型的类型:
{-# LANGUAGE DataKinds #-}
data Subject = New | Existing
在这里,据我所知,我们已经命名为Subject,类型为构造函数New和Existing,即:: Subject。这些类型构造函数不使用参数(我计划将它们用作幻影类型),它应该大致相当于:
{-# LANGUAGE EmptyDataDecls #-}
data New
data Existing
现在我可以这样写了:
{-# LANGUAGE DataKinds #-}
{-# LANG
C++中的所有其他声明语法都很有意义,例如:
int i;
i是一个int
int *i;
取消引用i时,结果为int
int i[];
下标为i时,结果为and int
int *i[];
如果订阅了i,则取消对结果的引用,最终结果为int
但是,当你查看引用变量的语法时,这种原本一致的推理就会分崩离析。
int &i = x;
“当获取i的地址时,结果是一个int”没有任何意义。
我是否遗漏了什么,或者这真的是其他系统背后明显的推理的一个例外?如果它是一个异常,为什么选择这种语法?
编辑:
解决了为什么选择&符号来达到这个目的,而不是是否有一种普遍一致的方法来读取与上述方法
my $var1=[{'a'=>'1','b'=>'2'},1];
print @$var1[0]->{a};
它将打印1
但是,如果我像下面这样打印:
print @$var1->{a};
它将像下面这样打印错误
Can't use an undefined value as a HASH reference;
有人能解释一下这两种打印语句之间的差异吗?
我一直在尝试通过从服务器获取数据(两行php代码)来显示一些数据(只有三个属性的json对象)。为了获取和显示html页面中的数据,我分别使用了BackboneJS和Handlebar模板。下面是javascript代码
var User = Backbone.Model.extend({
urlRoot:"getUser/"
});
var UserView = Backbone.View.extend({
el:$("#user"),
initialize: function(){
this.model.bind(&