小编Bea*_*rtz的帖子

去"继承" - 在结构中使用匿名类型作为方法参数

我试图巩固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结构将有额外的字段/成员; 希望这不会进一步混淆水

inheritance go

8
推荐指数
1
解决办法
1万
查看次数

Chrome中的JSON破解按钮,IE中的重新加载按钮(显示为裸数据)

在任何事情之前:$ .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)

ruby jquery internet-explorer google-chrome ruby-on-rails

7
推荐指数
1
解决办法
2548
查看次数

在CSS中的每个字符后面插入一个空格

我们假设我们有这个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不是一个选项,因为它必须动态调整宽度,我不想永远检查浏览器的字距调整实现.但是多亏了那些家伙的建议,我知道在制定问题时我已经忘记了一些东西:)

这是摆弄的小提琴

html css html5 css3

4
推荐指数
3
解决办法
1117
查看次数

Proc#curry和splat运算符:使用任意数量的参数进行Currying

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在没有参数的情况下调用,那就没关系.

ruby functional-programming currying

2
推荐指数
1
解决办法
1264
查看次数