小编Eli*_*off的帖子

什么可以强制转换为Ruby中的整数?

在Ruby中,2 + nil例如,如果你尝试这样做,你会得到

TypeError:nil无法强制转换为Integer

但是,这让我想知道是否有任何东西可以强迫进入Integer.很多时候Integers都被强制转换为其他数字类型,就像这里一样

(2 + Rational('1/2')).class 
# => Rational
(2 + 0.5).class
# => Float
(2 + 1i).class
# => Complex
Run Code Online (Sandbox Code Playgroud)

并且,Ruby中的布尔人不会被强迫Integer.那么,被胁迫的是Integer什么?

ruby

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

如何在 python 中列出所有可能的排列?

我目前正在自己​​做一个简单的项目,我偶然发现了一个问题:
我需要一个包含 4 个数字的列表:比如说

L=[1,3,4,6]  
Run Code Online (Sandbox Code Playgroud)

我需要一个完整的数字重新排列列表,以便:

L_arranged=[[1,3,4,6],[1,3,6,4],[1,6,3,4],...,[3,4,1,6]]  
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?
即使是理论也会很有用,谢谢:)

python python-3.x

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

如何在Angular 4单元测试中模拟@ngrx/store状态

我正在使用@ngrx/store和@ngrx/effect开发一个Angular 4应用程序,我正在尝试为我的效果编写一些单元测试.

我的一个效果应该是使用服务从后端获取一些数据.从后端检索值后,应每隔一段时间触发此效果,以生成轮询效果并更新本地数据.

由于轮询间隔是在我的应用程序状态配置的,我希望能够模拟状态存储,以便我可以在测试期间更改它.

这是我的SPEC:

describe('Order Effects', () => {

  let actions: Observable<any>;
  let effects: OrderEffect;

  beforeEach(() => {
    TestBed.configureTestingModule({
      imports: [
        StoreModule.forRoot({ orders: ordersReducer })
      ],
      providers: [
        OrderEffect,
        provideMockActions(() => actions),
        { provide: OrderService, useValue: jasmine.createSpyObj('orderService', ['getAllOrders']) }
      ]
    });

    effects = TestBed.get(OrderEffect);
  });


  it('should load orders and call load orders complete action', () => {

    const mockData = [{ id: 1 }, { id: 2 }, { id: 3 }];

    const orderService = TestBed.get(OrderService);
    orderService.getAllOrders.and.returnValue(Observable.of(mockData));

    actions = …
Run Code Online (Sandbox Code Playgroud)

unit-testing jasmine angular

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

是否有内置方法来检查#next或#peek是否会引发StopIteration?

我正在与几个迭代器一起工作,在这些迭代器中,我必须按照以下方式做点事情(enum是一个枚举器)

enums_with_zero << enum.rewind if enum.peek == 0
Run Code Online (Sandbox Code Playgroud)

通常可以正常工作,但这是在#next枚举已经被调用几次之后。问题在于,enum可能在末尾传递了一些值enum,我遇到enum.peekStopIteration因为enum完成而引发问题的问题。有没有一种方法我可以把在保护检查enum.peekenum.next会导致StopIteration之前,我把它。例如,某些东西会具有这种行为?

class Enumerator
  def has_next?
    begin
      peek && true
    rescue StopIteration
      false
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby enumerator

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

如何在Enum.map中调用匿名函数

我正在学习Elixir,我正在研究Project Euler,试图加强我在Elixir的技能.现在我有这个代码

fib = fn
  a,b,0 -> a
  a,b,n -> fib.(b, a+b, n-1)
end
IO.puts Enum.sum(Enum.filter(Enum.map(1..50, fn n -> fib.(0,1,n) end), even and fn(x) -> x < 4000000 end))
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此代码时,我得到:

undefined function fib/0
(elixir) src/elixir_fn.erl:33: anonymous fn/3 in :elixir_fn.expand/3
(stdlib) lists.erl:1238: :lists.map/2
(stdlib) lists.erl:1238: :lists.map/2
(elixir) src/elixir_fn.erl:36: :elixir_fn.expand/3
Run Code Online (Sandbox Code Playgroud)

我该如何解决?

functional-programming elixir

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

解决基本乘法的递归

我应该编写一个函数来查找给定数量的狗需要的鞋子数量。它可以很容易地用乘法来完成,但我们需要使用递归,所以我有

def dogShoes(n):
    total = 0
    if n>0:
        shoes =   n + dogShoes(n)
        total = total + 1
        if total == 4:
            return shoes
Run Code Online (Sandbox Code Playgroud)

但我现在意识到第 4 行将走向无穷大,而我认为会阻止它的底部甚至不会实现。有没有办法说 when totalis 4,停止并返回答案而不shoes走向无穷大?

python recursion jython multiplication

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

为什么头尾模式匹配比索引快得多?

我今天正在处理一个HackerRank问题并且最初使用索引编写它,并且对于大多数测试用例来说它非常慢,因为它们非常庞大.然后我决定将其切换到head:tail模式匹配,它只是缩放.差别绝对是白天和黑夜,但我无法弄清楚它是如何改变效率的.如果它完全有用,这是参考的代码

使用索引进行最有效的尝试

count :: Eq a => Integral b => a -> [a] -> b
count e [] = 0
count e (a:xs) = (count e xs +) $ if a == e then 1 else 0

fullCheck :: String -> Bool
fullCheck a = prefixCheck 0 (0,0,0,0) a (length a) && (count 'R' a == count 'G' a) && (count 'Y' a == count 'B' a)

prefixCheck :: Int -> (Int, Int, Int, Int) -> String -> …
Run Code Online (Sandbox Code Playgroud)

performance haskell pattern-matching

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

为什么这是无效的eta转换?

我正在研究haskell中一个非常基本的问题.我试图计算字符串中的小写字母数.我的解决方案是这个

import Data.Char

lowercaseCount :: String -> Int
lowercaseCount x = length $ filter isLower x
Run Code Online (Sandbox Code Playgroud)

我正在看实际的实现,lowercaseCount并看到它似乎应该能够减少eta.我试过这个

lowercaseCount = length $ filter isLower
Run Code Online (Sandbox Code Playgroud)

但GHC对我大喊大叫

无法将预期类型[Char] -> Int 与实际类型匹配Int

我想知道为什么这个eta减少是非法的,并且如果有办法使这个功能能够以eta减少的形式.

haskell lambda-calculus

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

Java排序数组由第三个元素组成

我想按下降它的第三列对String数组后代进行排序,问题是我想按它的数值排序.

例:

如果我最初有这个数组:

String [][] array = new String[][] {
  {"Barcelona", "156", "1604"}, 
  {"Girona", "256", "97"},
  {"Tarragona", "91", "132"},
  {"Saragossa", "140", "666"}
}
Run Code Online (Sandbox Code Playgroud)

我希望它成为这个:

{
  {"Barcelona", "156", "1604"}, 
  {"Saragossa", "140", "666"}, 
  {"Tarragona", "91", "132"}, 
  {"Girona", "256", "97"}
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

java arrays sorting

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

JShell/Java 9中的相等性是怎么回事?

我一直在使用JShell来测试它,今天我遇到了相当有趣的行为.

jshell> String a = "A"
a ==> "A"

jshell> String b = "A"
b ==> "A"

jshell> a == b
$4 ==> true

jshell> "A" == "A"
$5 ==> true
Run Code Online (Sandbox Code Playgroud)

我首先想知道这是否是Java 9的一个功能,我通过使用Java 9编译和运行该程序来检查它

public class Equus {
    public static void main(String... args) {
        String a = "A";
        String b = "A";
        System.out.println("a == b");
        System.out.println(a == b);
        System.out.println("\"A\" == \"A\"");
        System.out.println("A" == "A");
    }
}
Run Code Online (Sandbox Code Playgroud)

有趣的是,我得到了

a == b 
true 
"A" == "A" 
true
Run Code Online (Sandbox Code Playgroud)

作为我的输出也是如此.这里发生了什么?为什么ab彼此相等,为什么是 …

java java-9 jshell

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