在此处的Go Web服务器示例中:http://golang.org/doc/effective_go.html#web_server
以下代码行有效
var addr = flag.String("addr", ":1718", "http service address")
Run Code Online (Sandbox Code Playgroud)
但改变它
addr := flag.String("addr", ":1718", "http service address")
Run Code Online (Sandbox Code Playgroud)
是一个编译错误.为什么?是否与函数的返回类型*string
而不是面部有什么关系string
?这有什么不同?
更新:感谢您指出:=
顶层不允许这样做.知道为什么这种不一致性在规范中?我没有看到任何理由在块内部行为有所不同.
:=
操作数意味着什么,更具体地说是Python?
有人可以解释如何阅读这段代码吗?
node := root, cost = 0
frontier := priority queue containing node only
explored := empty set
Run Code Online (Sandbox Code Playgroud) 我遇到了流行的data.table
包装,有一件事特别引起了我的兴趣.它有一个就地分配操作符
:=
这在基础R中没有定义.事实上,如果你没有加载data.table
包,如果你试图使用它(例如a := 2
),它会引发错误:
错误:无法找到功能
":="
另外,为什么:=
工作?为什么R允许您定义:=
为中缀运算符,而其他每个中缀函数都必须被包围%%
,例如
`:=` <- function(a, b) {
paste(a,b)
}
"abc" := "def"
Run Code Online (Sandbox Code Playgroud)
显然,它并不是%function.name%
用于定义中缀函数的替代语法.正在data.table
利用R的一些解析怪癖?这是一个黑客?它将来会被"修补"吗?
通过深入研究R源代码(文件R-3.2.2/src/main/gram.y
行2836
,2852)
我发现R解析器/标记器认为这:=
是一个LEFT_ASSIGNMENT
标记.
但是当我尝试将它用作赋值运算符时R.3.2.2
,
我有一个错误(无法找到:=
...的函数)但是你可以看到R认为它是一个类似的赋值<-
:
> myVar := 42
Erreur : impossible de trouver la fonction ":="
> :=
Erreur : unexpected assignment in ":="
> <-
Erreur : unexpected assignment in "<-"
Run Code Online (Sandbox Code Playgroud)
它是一个bug,还是:=
需要从tokenizer源代码中删除令牌?
:=
R中有关于运算符的过去的故事吗?
我有一个mysql
表(scho_id
,school_name
,school_views
).
我正在寻找一个基于的学校的mysql
查询.rank
school_views
我在stackoverflow上找到了这个解决方案.
SET @points := -1, @num := 0;
SELECT scho_id
, school_views
, @num := if(@points = school_views, @num, @num + 1) as school_rank
, @points := school_info.school_views as dummy
FROM school_info
ORDER BY school_views desc, scho_id asc;
Run Code Online (Sandbox Code Playgroud)
这解决了我的问题,但我注意到:=
这个查询中有一个新的运算符.我很想知道这个运算符的含义和用法.
我们有这个方法调用:
SendAck(AppData:=AppData, Status:=Status, StatusMessage:=StatusMessage, IsApplication:=IsApplication)
Run Code Online (Sandbox Code Playgroud)
以下是定义:
Private Sub SendAck(ByVal AppData As XDocument, ByVal Status As Boolean, ByVal StatusMessage As String, ByVal IsApplication As Boolean)
Run Code Online (Sandbox Code Playgroud)
为什么调用具有带":="的参数.我只是好奇.
两者之间有什么区别
set test_var = 20;
Run Code Online (Sandbox Code Playgroud)
和
set test_var:=20;
Run Code Online (Sandbox Code Playgroud)
因为他们似乎都分配了价值?
我不时地看到这一点,想知道它是什么.我确实试过谷歌,但它过滤掉搜索中的字符.我有几本书也没有引用它.
FWIW,我记得在pascal中是赋值运算符.
任何人都可以指向MSDN或类似页面吗?
有谁知道是什么:= for?
我试过谷歌搜索但似乎谷歌过滤所有符号?
我知道下面的内容类似于检查变量HOME是否是一个目录,然后某些东西不等于空字符串.
if [ "${HOME:=}" != "" ] && [ -d ${HOME} ]
Run Code Online (Sandbox Code Playgroud) 在阅读http://ggvis.rstudio.com/interactivity.html时,我注意到代码中有:=洒在其中.我假设这是一种为函数提供参数的新方法?究竟是什么?
mtcars %>%
ggvis(~wt, ~mpg, size := input_slider(10, 1000)) %>%
layer_points(fill := "red") %>%
layer_points(stroke := "black", fill := NA)
Run Code Online (Sandbox Code Playgroud)