小编har*_*arm的帖子

以唯一且确定的方式将两个整数映射到一个整数

想象一下两个正整数A和B.我想将这两个整数组合成一个整数C.

可能没有其他整数D和E组合为C.因此将它们与加法运算符组合不起作用.例如30 + 10 = 40 = 40 + 0 = 39 + 1连接也不起作用.例如"31"+"2"= 312 ="3"+"12"

这种组合操作也应该是确定性的(总是在相同的输入下产生相同的结果)并且应该总是在整数的正侧或负侧产生整数.

mapping algorithm math integer deterministic

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

RSpec:功能和请求规范之间有什么区别?

Rspec的功能规格请求规范之间的概念差异是什么?

从功能规范文档:

功能规范是用于通过应用程序执行功能切片的高级测试.他们应该只通过其外部接口(通常是网页)来驱动应用程序.

并根据要求规格:

请求规范提供了一个围绕Rails集成测试的瘦包装器,旨在通过完整堆栈驱动行为,包括路由(由Rails提供)而不是存根(由您决定).根据请求规范,您可以:

  • 指定单个请求
  • 跨多个控制器指定多个请求
  • 在多个会话中指定多个请求

我知道功能规格使用Capybara并且请求规格没有.但这几乎不值得采用不同的概念.

rspec ruby-on-rails rspec-rails

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

为什么Go有一个"goto"声明

谷歌的Go语言是一种新语言.因此,我惊讶地发现它有一个'goto'声明.我一直被教导说'goto'语句已成为过去,而且它会使程序的实际流程陷入窘境.功能(或方法,如果你愿意)总是一种更好的控制流量的方法.

我肯定错过了什么.为什么以及何时使用'goto'是一个好主意?或者谷歌为什么要加入它?

goto go

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

切片类型

我正在通过优秀的Tour of Go工作.我使用以下解决方案完成了其中一个练习(#45):

func Pic(dx, dy int) [][]uint8 {
    pic := make([][]uint8, dy) /* type declaration */
    for i := range pic {
        pic[i] = make([]uint8, dx) /* again the type? */
        for j := range pic[i] {
            pic[i][j] = uint8((i+j)/2)
        }
    }
    return pic
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我必须使用两次类型的make语句uint8(请参阅代码段中的注释).这似乎是多余的,但我无法弄清楚如何以另一种方式做到这一点.

types go slice

63
推荐指数
2
解决办法
3万
查看次数

Dart lambda/shortland功能混乱

我仍然是Dart的新手,=>(胖箭头)的语法仍然让我感到困惑(我来自C#背景).

因此,在C#脂肪箭头(=>)表示:进入因此,例如:

Action<string> action1 = (str) => { System.Diagnostic.Debug.WriteLine("Parameter received: " + str.ToString()); }

action1("Some parameter");
Run Code Online (Sandbox Code Playgroud)

意味着:无论发送为参数action1(如果它可以被转换为string)都转到 内部范围(在我们的例子中它只是打印在内部)Debug.WriteLine()

但在Dart中它有所不同......(?)

例如在 Future.then

ClassWithFutures myClass = new ClassWithFutures();
myClass.loadedFuture.then( 
   (str) => { print("Class was loaded with info: $str"),
   onError: (exp) => { print("Error occurred in class loading. Error is: $exp"); }
);
Run Code Online (Sandbox Code Playgroud)

飞镖编辑警告我,第一和第二print是:Expected string literal for map entry key.我认为在C#方式中str它只是为参数命名,该参数将由Future.then用于调用onValue或的内部回调填充onError

我做错了什么?

dart

37
推荐指数
2
解决办法
2万
查看次数

这个带有下划线,内联接口和赋值的变量声明是什么?

这段Go代码有什么作用?

var _ interface {
    add(string) error
} = &watcher{}
Run Code Online (Sandbox Code Playgroud)

我相信&watcher{}返回两件事,第一件被丢弃,第二件被分配给......一个界面?我在Github的fswatch中找到了代码.

syntax go

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

从异步中返回一个字符串

我想从异步函数返回一个String,但我得到一个Future我做错了什么;

main() {
  String s;
  s = dummy("http://www.google.com");
}

String dummy(String s) {
  String response;
  response = readURL(s);
  return response;
}


Future<String> readURL(String requestString) async {
  String response = await http.read(requestString);
  print(response);
  return response;

}
Run Code Online (Sandbox Code Playgroud)

错误:

type'_Future'不是'response'类型'String'的子类型.

dart dart-async

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

使用'逗号确定'成语或返回指针?

考虑以下Go片段:

func sheep() (int, bool) {
    return 1, true
}

func main() {
    if dolly, ok := sheep() {
         //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

当我读到'Effective Go'时,这被称为'逗号确定'成语.据我所知,这用于区分"发现"和"未找到"的东西.

同样可以通过以下方式实现:

type Sheep struct {}

func sheep() *Sheep {
    return &Sheep{}
}

func main() {
    if dolly := sheep(); dolly != nil {
         //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

后一个例子似乎实现了同样的目的,甚至可能更好.使用'逗号ok'示例,赋值仅在if块中有效.

也许我错过了一些考虑因素.哪种模式更受欢迎?为什么?

一个简短的例子:http://play.golang.org/p/ATxvle38iE

idioms go

6
推荐指数
2
解决办法
2710
查看次数

删除Golang切片元素

我想以就地方式删除集合中的元素.请考虑以下代码段:

package main

import "fmt"

type Ints []int

func (xs Ints) Filter() {
    for i := 0; i < len(xs); i++ {
        if xs[i]%2 == 0 { // Or some other filtering function
             xs = append(xs[:i], xs[i+1:]...)
        }
        fmt.Printf("i %+v\n", i)
        fmt.Printf("xs %+v\n", xs)
    }
}

func main() {
    a := Ints([]int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10})

    fmt.Printf("initial a %+v\n", a)

    a.Filter()

    fmt.Printf("final a %+v\n", a)
}
Run Code Online (Sandbox Code Playgroud)

http://play.golang.org/p/1nL6Il2Gf1

令人惊讶的结果是: final a [1 3 5 7 9 …

in-place go slice

6
推荐指数
1
解决办法
1078
查看次数

使用 constantize 的安全影响

我目前正在审查一些 Rails 控制器。该控制器接受用户输入,并根据该用户输入创建一个新对象,如下所示:

clazz = params[:type].classify.constantize
clazz.new(some_method_which_returns_filtered_params)
Run Code Online (Sandbox Code Playgroud)

我担心这种方法的安全性。Ruby 中是否存在可以恶意使用“新”方法的类?

例如,可能会用新符号淹没程序,导致拒绝服务(请参阅http://brakemanscanner.org/docs/warning_types/denial_of_service/)。

ruby security ruby-on-rails

5
推荐指数
1
解决办法
789
查看次数

CGO; C函数有int指针参数,如何传递正确的类型?

目前我正在使用Cgo从Go调用C函数.我正试图在Go中重新创建"Read a Photo"示例.

然而,关于C函数的一个期望一个int* len论证(奖金问题;是否与int *len?相同).当我读到这个时,这是一个指向整数的指针.有问题的函数是ccv_writelibccv库.它的完整签名是:

int ccv_write(ccv_dense_matrix_t* mat, char* out, int* len, int type, void* conf)

相关的代码段如下:

type Image struct {
    image *C.ccv_dense_matrix_t
}

func main() {
    image := new(Image)

    /* ... snip ... */

    dst := C.CString("black_and_white_painting.jpg")
    defer C.free(unsafe.Pointer(dst))
    x := 0 // <- perhaps var x int ?
    C.ccv_write(image.image, dst, (*C.int)(&x), C.CCV_IO_PNG_FILE, 0)
}
Run Code Online (Sandbox Code Playgroud)

上面的示例生成以下编译时错误: cannot convert &x (type *int) to type *_Ctype_int

关于如何传递正确论点的任何想法?

go cgo

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

Flutter:如何将 StreamBuilder 与 ListView.separated 一起使用

我想要一个包含来自 Stream 的项目的 ListView。当然,List 的内容应该反映 Stream 中的变化。由于我的设计师怪癖,我希望列表中的项目由分隔符分隔。

只是想知道,使用分隔符创建 ListView 并对 Stream 更改做出反应的正确方法是什么。

body: StreamBuilder(
        stream: someStream,
        builder: (ctx, snapshot) {
          return ListView.separated(
            separatorBuilder: (context, index) => Divider(color: Colors.black),
            itemCount: ***whatsHere***?,
            itemBuilder: (BuildContext ctx, int index) {
...
Run Code Online (Sandbox Code Playgroud)

希望我错过了什么。由于以某种方式获取源流长度的想法至少看起来很奇怪,因为流的异步性质。StatefullWidget 使用流订阅(和 setState 调用)似乎是可行的,但是 StreamBuilder 的发明目的完全相同,不是吗?

listview stream dart flutter stream-builder

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