来自ld 的文档:
-X 符号值
设置未初始化的字符串变量的值。符号名称应采用 importpath.name 的形式,如“go tool nm”打印的符号表中所示。
所以这很酷。它允许你做这样的事情:
package main
import "fmt"
var version string
func main() {
fmt.Println(version)
}
Run Code Online (Sandbox Code Playgroud)
编译:go build -ldflags '-X main.version 42' ...
我对他的功能有两个问题。首先,它也适用于初始化的字符串(例如var version = "bad build"),即使文档明确指出“否则未初始化的字符串变量”。
第二题是关于空格的。我的Makefile包含以下几行:
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null)
GIT_COMMIT := $(shell git rev-parse --short HEAD 2>/dev/null)
LDFLAGS := '-X main.version "$(GIT_BRANCH) $(GIT_COMMIT)"'
Run Code Online (Sandbox Code Playgroud)
-ldflags 'flag list'
因此他们对所有链接器标志使用单引号。但是包含空格作为标志符号的字符串又如何呢-X?双引号工作得很好,顺便说一句,转义单引号也是如此,我只是不确定我是否可以依靠所有这些来一致地工作,因为文档没有提及任何内容。
第一个问题的澄清:
对所有变量进行零初始化。
文档说: …
我正在运行Node.js 0.10.21.我尝试了两种CoffeeScript 1.6.3,无论是否使用require('coffee-script/extensions').将这两个文件编译为JavaScript并直接在Node中运行它们当然可以正常工作.
# ./folder/a.coffee
require('../b').test()
# ./b.coffee
exports.test = -> console.log 'yay'
# $ coffee folder/a.coffee
#
# Error: Cannot find module '../b'
# at Function.Module._resolveFilename (module.js:338:15)
# at Function.Module._load (module.js:280:25)
# at Module.require (module.js:364:17)
# at require (module.js:380:17)
# at Object.<anonymous> (/Users/test/folder/a.coffee:1:1)
# at Module._compile (module.js:456:26)
Run Code Online (Sandbox Code Playgroud) 我正在寻找一个理智的解决JavaScript只有一个构造函数的问题.所以假设我们有一个类Point,我们希望允许从坐标创建对象.
我会在所有这些例子中忽略类型检查.
function Point(x, y) {
this.x = x;
this.y = y;
}
Run Code Online (Sandbox Code Playgroud)
简单.如何从其他点创建积分?
function Point(x, y) {
if (!y /* && x instanceof Point */) {
y = x.y;
x = x.x;
}
this.x = x;
this.y = y;
}
Run Code Online (Sandbox Code Playgroud)
这很快变成了一场噩梦.所以我想要的是一个设计模式,它将这两个构造函数分离(或者将一个分成两个,而不是).Objective-C有一个很好的模式.ObjC人用某物创造物体.
function Point(x, y) {
this.x = x;
this.y = y;
}
Point.withPoint = function(point) {
return new Point(point.x, point.y);
};
Run Code Online (Sandbox Code Playgroud)
到目前为止,我非常喜欢这个.但现在我们有两种不同的语法.
var a = new Point(4, 2);
var b = Point.withPoint(a);
Run Code Online (Sandbox Code Playgroud)
好吧,这很容易,不是吗?只需添加Point.withCoordinates.但那么构造函数呢?把它藏起来?我不知道.我想这就是你进来的地方. …
backbone.js ×1
coffeescript ×1
constructor ×1
go ×1
javascript ×1
jekyll ×1
json ×1
markdown ×1
middleman ×1
node.js ×1