Scala 中可以,建议题主尝试一下;
没有足够的数据
(゚∀゚ )
暂时没有任何数据
douglarek 回答了问题 · 2016-05-24
Scala 中可以,建议题主尝试一下;
Scala 中可以,建议题主尝试一下;
关注 4 回答 3
douglarek 回答了问题 · 2016-05-24
var defaultServeMux ServeMux
这个既是声明也是初始化,defaultServeMux 默认值是 ServeMux 的 零值(zero value);
{代码...} 这个既是声明也是初始化,defaultServeMux 默认值是 ServeMux 的 零值(zero value);
关注 3 回答 1
douglarek 回答了问题 · 2016-05-24
type assertion
-> 类型断言,https://golang.org/doc/effective_go.html#interface_conversions
type assertion -> 类型断言,[链接]
关注 7 回答 6
douglarek 回答了问题 · 2016-05-24
Gopher 英文意思是地鼠,也泛指 Golang 开发者,类似于 Python 开发者叫 Pythonista; 至于 @查尔斯 说: 或者可以理解为go语言的全称 明显胡扯!
关注 4 回答 1
douglarek 回答了问题 · 2016-05-24
接口没什么高深之处,其作用就是对外隐藏实现:
type A interface {
Get(k string) interface{}
Set(k string, v interface{})
}
func NewA() A {
return &a{}
}
type a struct {
// ...
}
func (a0 *a) Get(k string) interface{} {
// ...
return nil
}
func (a0 *a) Set(k string, v interface{}) {
// ...
}
接口没什么高深之处,其作用就是对外隐藏实现: {代码...}
关注 5 回答 3
douglarek 回答了问题 · 2016-05-24
base64
encode uuid
:
import (
"encoding/base64"
"github.com/satori/go.uuid"
)
func sjmm() string {
encoder := base64.NewEncoding("NE4NahtY8WgBhvdjKdxvfwe")
return encoder.EncodeToString(uuid.NewV4().Bytes())
}
base64 encode uuid : {代码...}
关注 12 回答 6
douglarek 提出了问题 · 2015-06-05
Django 一个 request 请求中如何保证多个 db 的事物以及回滚呢?
比如下面一个简单的例子:
def foo(request):
A() # 访问一个名叫 a 的db alias
B() # 访问一个名叫 b de db alias
怎样保证 foo 函数内 A B 两个 db 操作同时事务并且失败时同时回滚?
Django 一个 request 请求中如何保证多个 db 的事物以及回滚呢? 比如下面一个简单的例子: {代码...} 怎样保证 foo 函数内 A B 两个 db 操作同时事务并且失败时同时回滚?
关注 3 回答 1
douglarek 回答了问题 · 2014-08-19
在列表里面执行查找操作,时间复杂度是 log(n)
;在字典中执行查找操作是 log(1)
;
在列表里面执行查找操作,时间复杂度是 log(n);在字典中执行查找操作是 log(1);
关注 0 回答 5
douglarek 收藏了文章 · 2014-08-19
from http://oyanglul.us
多巧啊, 人家姓 Curry 名 Haskell, 难怪 Haskell 语言会自动柯里化, 呵呵. 但是不奇怪吗, 为什么要柯里化呢. 为什么如此重要导致 Haskell 会默认自动柯里化所有函数, 不就是返回一个部分配置好的函数吗.
我们来看一个 Haskell 的代码.
max34(max3)4
结果都是4, 这有设么用呢.
这里看不出来, 放到高阶函数
试试. 什么? 看不懂天书 Haskell, 来看看 JavaScript 吧.
f(['1','2']) => '12'
好吧,如果不用柯里化, 怎么写? 啊哈 reduce
varconcatArray=function(chars){returnchars.reduce(function(a,b){returna.concat(b);});}concat(['1','2','3'])// => '123'
很简单,对吧.
varconcatArray=function(chars,inc){returnchars.map(function(char){return(+char)+inc+'';}).reduce(function(a,b){returna.concat(b)});}console.log(concatArray(['1','2','3'],1))// => '234'
varmultiple=function(a,b){return+a*b+''}varconcatArray=function(chars,inc){returnchars.map(function(char){returnmultiple(char,inc);}).reduce(function(a,b){returna.concat(b)});}console.log(concatArray(['1','2','3'],2))// => '246'
是不是已经看出问题了呢? 如果我在需要每个数字都减2,是不是很麻烦呢.需要将map
参数匿名函数中的 multiple 函数换掉. 这样一来concatArray
就不能同时处理加, 乘和减? 那么怎么能把他提取出来呢? 来对比下柯里化的解法.
varmultiple=function(a){returnfunction(b){return+b*a+''}}varplus=function(a){returnfunction(b){return(+b)+a+''}}varconcatArray=function(chars,stylishChar){returnchars.map(stylishChar).reduce(function(a,b){returna.concat(b)});}console.log(concatArray(['1','2','3'],multiple(2)))console.log(concatArray(['1','2','3'],plus(2)))
有什么不一样呢 1. 处理数组中字符的函数被提取出来, 作为参数传入 2. 提取成柯里化的函数, 部分配置好后传入, 好处显而易见, 这下接口非常通畅 无论是外层调用
concatArray(['1','2','3'], multiple(2))
还是内部的 map 函数
chars.map(stylishChar)
这些接口都清晰了很多, 不是吗
这就是函数式的思想, 用已有的函数组合出新的函数, 而柯里化每消费一个参数, 都会返回一个新的部分配置的函数, 这为函数组合提供了更灵活的手段, 并且使得接口更为流畅.
再加上自动柯里化的库 ramda, 简直就完美了
var multiple = ramda.curry(function(a, b){
return +b*a + ''
})
var plus = ramda.curry(function(a, b){
return (+b)+a + ''
})
多巧啊, 人家姓 Curry 名 Haskell, 难怪 Haskell 语言会自动柯里化, 呵呵. 但是不奇怪吗, 为什么要柯里化呢. 为什么如此重要导致 Haskell 会默认自动柯里化所有函数, 不就是返回一个部分配置好的函数吗.
查看全部 个人动态 →
(゚∀゚ )
暂时没有
(゚∀゚ )
暂时没有
注册于 2013-05-21
个人主页被 708 人浏览
推荐关注