小编Dav*_*ric的帖子

如何重建 gem 的修补版本?

只是想学习如何在没有 gemspec 的情况下重建 ruby​​ 的 gem:

例如,尝试为 Gosu 库创建固定 gem:

  1. 下载 gem gem fetch gosu
  2. 提取宝石的内容 gem unpack gosu-0.7.45.gem
  3. 应用补丁: cd gosu-0.7.45 && patch -p1 /path/to/patch/fix_cflags.patch
  4. ???如何从修改后的源重建 gem?我找不到原始的 gemspec。

任何的想法 ?

ruby gem rubygems

4
推荐指数
1
解决办法
1993
查看次数

字符串上的Splat(星号)运算符

要编写splat运算符的自定义结果,必须实现to_a方法.String类的示例:

class String
  def to_a
    self.split //
  end
end

irb> res = *'text'
=> ["t", "e", "x", "t"]
Run Code Online (Sandbox Code Playgroud)

但是如果没有上面的monkeypatch,String类对to_a方法一无所知:

irb> String.respond_to? :to_a
=> false
Run Code Online (Sandbox Code Playgroud)

所以问题是,在标准的"未修补"的String对象上应用splat运算符时会调用什么方法?

irb> res = *'text'
=> ['text']
Run Code Online (Sandbox Code Playgroud)

ruby monkeypatching

3
推荐指数
1
解决办法
1138
查看次数

如何在列表理解中设置严格性?

我有点困惑如何重写严格评估列表理解以使用seq而不是bang模式:

zipWith' f l1 l2 = [ f e1 e2 | (!e1, !e2) <- zip l1 l2 ]
Run Code Online (Sandbox Code Playgroud)

任何的想法 ?

我试过了

zipWith' f l1 l2 = [ e1 `seq` e2 `seq` f e1 e2 | (e1, e2) <- zip l1 l2 ]
Run Code Online (Sandbox Code Playgroud)

但不幸的是,这并未强制对WHNF进行评估.

haskell lazy-evaluation strictness

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

Spree/Rails用户密码重置

我正在尝试从Rails控制台设置用户的(管理员)密码:

bundle exec rails console
> Spree::User.first.email
=> "admin@mysite.com"
> Spree::User.first.encrypted_password
  Spree::User Load (1.1ms)  SELECT "spree_users".* FROM "spree_users" LIMIT 1
=> "4ec556............................................."
>  Spree::User.first.password='spree123'
  Spree::User Load (1.0ms)  SELECT "spree_users".* FROM "spree_users" LIMIT 1
=> "spree123"
>  Spree::User.first.password_confirmation='spree123'
  Spree::User Load (1.0ms)  SELECT "spree_users".* FROM "spree_users" LIMIT 1
=> "spree123"
>  Spree::User.first.save!
  Spree::User Load (1.0ms)  SELECT "spree_users".* FROM "spree_users" LIMIT 1
   (0.3ms)  BEGIN
   (1.3ms)  SELECT COUNT(DISTINCT "spree_users"."id") FROM "spree_users" LEFT OUTER JOIN "spree_roles_users" ON "spree_roles_users"."user_id" = "spree_users"."id" LEFT OUTER JOIN "spree_roles" ON …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails spree devise ruby-on-rails-3

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

Python std方法层次结构调用记录?

刚刚在dict"type"子类中遇到问题.我确实覆盖了__iter__方法,并期望它会影响其他方法,如iterkeys,keys等.因为我相信他们调用__iter__方法来获取值,但似乎它们是独立实现的,我必须覆盖所有这些.

这是一个错误或意图他们没有使用其他方法并分别检索值?

我没有在标准Python文档中找到标准类方法之间调用依赖关系的描述.对于子类化工作和方向来说,为了正确的行为需要覆盖哪些方法,这将是很方便的.是否有一些关于python基类型/类内部的补充文档?

python python-datamodel

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

local_variables的行为 - 任何人都可以解释一下吗?

只是好奇为什么我不能从'local_variables'数组中删除声明的局部变量.

例:

x=1
myarr = local_variables.clone
p local_variables
=> [:x, :_]
p myarr
=> [:x, :_]
p local_variables.class
=> Array
p myarr.class
=> Array
myarr.delete :x
p myarr
=> [:_]
local_variables.delete :x
p local_variables
=> [:x, :_]
Run Code Online (Sandbox Code Playgroud)

WTF?

我确实怀疑使用参数调用local_variables.delete:x重新声明它,因为它被重新声明.但如果使用其他先前未声明的符号调用则不会更改它:

p local_variables
=> [:x, :_]
local_variables.delete :whatever
p local_variables
=> [:x, :_]
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下吗?

谢谢.

ruby

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

为什么类型约束不够?

寻找解释为什么以下定义不满足类型推断:

-- | nub' - naive Data.List.nub implementation with extra constraint
nub' :: (Eq a, Show a) => [a] -> [a]
nub' = foldr (\e ac -> if e `elem` ac then ac else e:ac) []
main = do
    print $ nub' []
-- Error: No instance for (Show a0) arising from a use of ‘print’
-- The type variable ‘a0’ is ambiguous
-- Note: there are several potential instances:
Run Code Online (Sandbox Code Playgroud)

而添加Integral约束则有所不同

nub' :: (Eq a, Show a, Integral …
Run Code Online (Sandbox Code Playgroud)

haskell

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