我觉得这可以改善(红宝石的常见感觉).我正试图根据值unq一系列哈希.在这个例子中,我想要元素的颜色.苔藓和雪是冒名顶替者.
# remove unique array of hashes based on a hash value
a = [
{ :color => "blue", :name => "water" },
{ :color => "red", :name => "fire" },
{ :color => "white", :name => "wind" },
{ :color => "green", :name => "earth" },
{ :color => "green", :name => "moss" },
{ :color => "white", :name => "snow" }
]
# remove moss and snow
uniques = []
a.each_with_index do |r, i|
colors = uniques.collect {|e| …Run Code Online (Sandbox Code Playgroud) 读取部分不是并发的,而是处理.我用这种方式表达了标题,因为我最有可能使用该短语再次搜索此问题.:)
在尝试超越示例之后,我陷入了僵局,所以这对我来说是一次学习经历.我的目标是这些:
func()执行某些正则表达式工作的文本.这是游乐场的链接.我试着写有用的评论,希望这是有道理的.我的设计可能完全错误,所以不要犹豫重构.
package main
import (
"bufio"
"fmt"
"regexp"
"strings"
"sync"
)
func telephoneNumbersInFile(path string) int {
file := strings.NewReader(path)
var telephone = regexp.MustCompile(`\(\d+\)\s\d+-\d+`)
// do I need buffered channels here?
jobs := make(chan string)
results := make(chan int)
// I think we need a wait group, not sure.
wg := new(sync.WaitGroup)
// start up some workers that will block and wait?
for w := 1; w <= 3; …Run Code Online (Sandbox Code Playgroud) 我遇到了这种引起错误或混乱的奇怪副作用.所以,想象一下,这不是一个简单的例子,但的一个例子疑难杂症可能.
name = "Zorg"
def say_hello(name)
greeting = "Hi there, " << name << "?"
puts greeting
end
say_hello(name)
puts name
# Hi there, Zorg?
# Zorg
Run Code Online (Sandbox Code Playgroud)
这不会改变名称.名字还在Zorg.
但现在看一个非常微妙的区别.在下一个例子中:
name = "Zorg"
def say_hello(name)
greeting = name << "?"
puts "Hi there, #{greeting}"
end
say_hello(name)
puts name
# Hi there, Zorg?
# Zorg? <-- name has mutated
Run Code Online (Sandbox Code Playgroud)
现在名字是Zorg?.疯.greeting =任务中的细微差别.Ruby在内部使用解析(?)或消息传递链接?我以为这只会像铲子一样链起来name.<<("?"),但我想这不会发生.
这就是为什么我在尝试连接时避免使用铲子操作符的原因.我一般尽量避免变异状态,但Ruby(目前)尚未针对此进行优化(尚未).也许Ruby 3会改变一切.很抱歉有关Ruby未来的范围 - 蠕变/侧面讨论.
我认为这特别奇怪,因为具有较少副作用的示例(第一个)具有两个铲操作符,其中具有更多副作用的示例具有更少的铲操作符.
更新 你是正确的DigitalRoss,我让它太复杂了.减少的例子:
one = "1"
two …Run Code Online (Sandbox Code Playgroud) 我正在使用一个名为Processing的框架,它基本上是一个Java applet.它具有执行键事件的能力,因为Applet可以.您还可以将自己的各种回调转换为父级.我现在没有这样做,也许这就是解决方案.目前,我正在寻找更多的POJO解决方案.所以我写了一些例子来说明我的问题.
请忽略在命令行(控制台)上使用键事件.当然这将是一个非常干净的解决方案,但它不可能在命令行上,我的实际应用程序不是命令行应用程序.事实上,关键事件对我来说是一个很好的解决方案,但我试图了解事件和轮询,而不仅仅是键盘特定的问题.
这两个例子都翻转了一个布尔值.当布尔值翻转时,我想要触发一次.我可以将布尔值包装在一个Object中,所以如果Object发生了变化,我也可以触发一个事件.我只是不想不必要地使用if()语句进行轮询.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
/*
* Example of checking a variable for changes.
* Uses dumb if() and polls continuously.
*/
public class NotAvoidingPolling {
public static void main(String[] args) {
boolean typedA = false;
String input = "";
System.out.println("Type 'a' please.");
while (true) {
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);
try {
input = br.readLine();
} catch (IOException ioException) {
System.out.println("IO Error.");
System.exit(1);
}
// contrived state change logic …Run Code Online (Sandbox Code Playgroud) 这是我的YAML文件.
description: fruits are delicious
fruits:
apple:
- red
- sweet
lemon:
- yellow
- sour
Run Code Online (Sandbox Code Playgroud)
我可以用gopkg.in/yaml.v1软件包阅读这个更平的版本,但是当我看到这个YAML文件看起来像是地图的地图时,我一直想知道如何阅读这个YAML文件.
package main
import (
"fmt"
"gopkg.in/yaml.v1"
"io/ioutil"
"path/filepath"
)
type Config struct {
Description string
Fruits []Fruit
}
type Fruit struct {
Name string
Properties []string
}
func main() {
filename, _ := filepath.Abs("./file.yml")
yamlFile, err := ioutil.ReadFile(filename)
if err != nil {
panic(err)
}
var config Config
err = yaml.Unmarshal(yamlFile, &config)
if err != nil {
panic(err)
}
fmt.Printf("Value: %#v\n", …Run Code Online (Sandbox Code Playgroud) 在 Git 相对 SVN 的优势(客观)的背景下,Git 更容易的合并/分支功能是否使使用 Git(或等效工具)时代码冻结变得无关紧要?代码冻结的概念是因为以后合并太困难而产生的吗?
我意识到这可能是一个主观问题,但我真的想知道“代码冻结”这个短语是否已经过时,或者是否表明项目不容易分支和合并。如果你可以自动分支和合并,你的代码会冻结吗?我不认为你会这样做,因为你可以在本地进行主题/功能分支并继续开发,因为你知道合并会很容易。
TLDR; http://jsfiddle.net/squarism/zaVrE/
我是Backbone.js和Underscore.js的新手(我相信Underscore包含在Backbone中).我在一个rails应用程序中使用它,但它的一点不/不重要.我正在关注主干上的Railscast两部分剧集.我正在尝试下划线,骨干,coffeescript,调试和每个人的文档.令人困惑的是Underscore API和coffeescript版本之间的差异.
例如:我有一个User对象数组作为'条目'.每个都有一个胜利者属性.所以这将有效:
# why does this return everyone?
non_winners = @select(entries) ->
@get('winner') == false
Run Code Online (Sandbox Code Playgroud)
所以这里有很多事情要做.@select来自下划线.@get来自骨干.所有这些都是coffeescript.将其转换为JS调试行有点疯狂.最终虽然我确实找出了骨干以外的javascript来测试它.我的问题是文档:
文档说:
filter_.filter(list, iterator, [context]) Alias: select
Run Code Online (Sandbox Code Playgroud)
我不知道怎么读这个.我刚刚调用@select,我认为它等同于.select(),但我没有给它一个迭代器.在浏览器控制台上的Javascript中,它仅返回一个数组,其中包含wins为false的对象.在我的应用程序中,如果我是console.log(non_winners),它会让我回到所有人,但是console.log(non_winners.length)符合我的预期(即:如果我有一个胜利者,那就是1).在我学习的过程中,这种差异确实令人困惑.
entries = [
{ name: 'Joe', winner: false },
{ name: 'Bob', winner: false },
{ name: 'Henry', winner: true }
]
# here's an example from my app
#non_winners = @select (entries) ->
# @get('winner') == false
# here's an example from the API
#evens = _.filter [1..6], (num) -> num % 2 …Run Code Online (Sandbox Code Playgroud) 有一个常见的LDAP属性叫做userCertificate; binary.它实际上在属性名称中有一个分号.在ruby中,我将LDAP条目转换为名为"struct"的OpenStruct对象.
>> struct.class => OpenStruct
但当然,红宝石认为这是一个行尾的角色.
?> struct.userCertificate;binary
NameError: undefined local variable or method `binary' for main:Object
from (irb):52
from :0
IRB知道局部变量在那里,因为它让我struct.userCertificate;binary从选项卡自动完成.在调用struct.methods时我也可以看到类变量.
>> struct.methods => ... "send", "methods", "userCertificate;binary=", "hash", ...
它绝对存在,如果我打印整个变量to_s(),我可以看到内容.但是,如果局部变量中有分号,我该如何访问?我有相关的解决方法,但我认为这是一个有趣的问题.
我是Go的新手,我已经阅读(来自常见问题解答)Go是OO而不是.我想使用Structs创建数据结构,并发现自己试图将Structs视为简单对象.我的概念证明是建造一辆汽车.我知道汽车是一个真实世界的物体,所以它适合于OOP,这在Go中可能很奇怪.但我认为用户类同样方便,所以这对我来说是一个有用的学习练习和参考.
此示例编译但无法正常运行.它使用多个源文件,因此您必须操作GOPATH并为此创建项目文件夹.
它应该如下所示:
$GOPATH/src/car/car.go
$GOPATH/src/car/parts/engine.go
Run Code Online (Sandbox Code Playgroud)
或者另一种看待它的方式:
$ cd /tmp/go/src
$ tree
.
??? car
??? car.go
??? parts
??? engine.go
Run Code Online (Sandbox Code Playgroud)
Main要求汽车实例到.Start()下面.当它回到主要时,汽车没有启动.
/* car/car.go */
package main
import (
"car/parts"
"fmt"
)
type Car struct {
sMake string
model string
engine parts.Engine
}
func init() { // optional init of package
// note that we can't use this as a constructor?
}
func main() {
car := Car{
sMake: "AMC",
model: "Gremlin",
}
fmt.Printf("I'm going to work now in my %s …Run Code Online (Sandbox Code Playgroud)