我试图巩固Go提供的遗传概念(可能是"组合"而不是纯粹的遗传).但是,我无法理解为什么我不能使用"父"类型作为func参数来生成作用于参数的泛型函数.
package main
import "log"
type Animal struct {
Colour string
Name string
}
type Dog struct {
Animal
}
func PrintColour(a *Animal) {
log.Printf("%s\n", a.Colour)
}
func main () {
a := new (Animal)
a.Colour = "Void"
d := new (Dog)
d.Colour = "Black"
PrintColour(a)
PrintColour(d)
}
Run Code Online (Sandbox Code Playgroud)
假设我的理解不正确,我怎样才能在Go中实现我想要的?
编辑 注意:
我不想将行为附加到结构
我想保持指针类型作为方法参数,因为我在一个宠物项目上单独工作,这需要我操纵传入的结构,然后再对其进行操作.
实际上我的Dog结构将有额外的字段/成员; 希望这不会进一步混淆水
在任何事情之前:$ .getJSON后退按钮显示JSON返回数据而不是页面没有帮助,以及https://groups.google.com/group/angular/browse_thread/thread/3787ad609c0beb77/eb1b57069dab9f63没有,互联网也没有没有帮助.
这是问题所在:
我在一个页面中调用一个url来获取json数据,然后在同一页面内使用jquery模板进行渲染.
想象一下,我们在http://someurl.com/search页面上,我们正在开始这样的请求
$.ajax({
url: '/searchthis', //important, this is NOT THE SAME URL
cache: false,
type: 'GET',
headers: {
"Accept": "application/json",
},
dataType: 'json'
success: function(data) {
doSomethingWithResults(data);
}
});
Run Code Online (Sandbox Code Playgroud)
Rack响应将缓存控制标头设置为无缓存:
Cache-Control:no-cache
Run Code Online (Sandbox Code Playgroud)
一切正常,但如果您将页面留在Chrome中的另一个页面,然后按后退按钮,您将看到裸JSON数据.在IE8中点击重新加载按钮时会出现相同的行为.如果您只需按下地址栏中的网址,则两者都可以正常工作.
我没有得到如何解决这个问题,因为Chrome家伙不会这样做(请参阅http://code.google.com/p/chromium/issues/detail?id=108425)
在我看来,似乎是在浏览器方面的误解,因为它缓存了它真正不应该的东西(响应Header)并且它在错误的URL下缓存了某些东西(因为JSON请求没有达到相同的URL)
我们假设我们有这个html:
<h2>TITLE</h2>
Run Code Online (Sandbox Code Playgroud)
是否有可能通过CSS的强大功能使其成为或表现如下:
<h2>T I T L E</h2>
Run Code Online (Sandbox Code Playgroud)
原因是我想证明标题中给定宽度上的字母是正确的,并且我不想在正确评估CSS选项之前求助于服务器端正则表达式巫术.
我已经设法通过CSS使用这些规则来证明单个字母:
h2 {
text-align: justify;
width: 200px; // for example
}
h2:after {
content: "";
display: inline-block;
width: 100%;
}
Run Code Online (Sandbox Code Playgroud)
我已经调查过了text-replace,但是在任何一个主流浏览器中都没有支持.除此之外,我还没有找到任何有希望的候选人.
如果有正确的支持,CSS3就可以了,JS没有任何帮助.
UPDATE
letter-spacing不是一个选项,因为它必须动态调整宽度,我不想永远检查浏览器的字距调整实现.但是多亏了那些家伙的建议,我知道在制定问题时我已经忘记了一些东西:)
Ruby 1.9内置支持currying支持两种处理proc的方法,它采用任意数量的参数:
my_proc = proc {|*x| x.max }
Run Code Online (Sandbox Code Playgroud)
1)curry没有争论:my_proc.curry.你将逗号分隔的参数传递给curried的proc,就像你对普通的proc一样.如果参数的数量是任意的,则无法实现正确的currying(如果某些参数不是splat,则会很有用)
2)curry带参数:my_proc.curry(n)这样,currying就会被应用,好像proc会接受n参数.例如:
my_proc.curry(3).call(2).call(5).call(1) #=> 5
Run Code Online (Sandbox Code Playgroud)
那么,你将如何通过任意数量的参数实现currying?那意味着,如果n没有给出?
我想到的一种方法是通过代理收集参数call然后解析procvia method_missing(如果除了call使用之外的任何方法/ call没有参数使用,请proc使用收集的参数调用),但我仍然在寻找其他方法实现它.
更新
正如Andy H所说,问题是什么时候停止晃动.对于我的目的,如果currying停止/ proc评估何时call调用任何方法或者call在没有参数的情况下调用,那就没关系.