小编Ari*_*iao的帖子

已注册的CancellationToken回调调用顺序

如果我CancellationToken在取消之前将一些回调注册到a ,则在取消令牌时似乎将以相反的顺序调用它们.这个调用顺序是否有保证?

var cts = new CancellationTokenSource();
var token = cts.Token;
token.Register(() => Console.WriteLine("1"));
token.Register(() => Console.WriteLine("2"));
token.Register(() => Console.WriteLine("3"));
cts.Cancel();
Run Code Online (Sandbox Code Playgroud)

这将输出

3
2
1
Run Code Online (Sandbox Code Playgroud)

c# async-await

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

rand(Range) - 没有将Range隐式转换为Integer

关于如何在范围之间创建随机时间 的问题的后续跟进.

Kernel#rand适用Time范围:

require 'time'
rand(Time.parse('9 am')..Time.parse('11:30 am'))
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用自定义类时,我最终得到了错误:

`rand':没有将Range隐式转换为Integer(TypeError)

class Int
  include Comparable

  attr_reader :num

  def initialize(num)
    @num = num
  end

  def succ
    Int.new(num + 1)
  end

  def <=>(other)
    num <=> other.num
  end

  def to_s
    "Int(#{num})"
  end

  def to_int
    @num
  end

  alias_method :inspect, :to_s
end

puts rand(Int.new(1)..Int.new(3))
Run Code Online (Sandbox Code Playgroud)

为什么?我在自定义课程中缺少什么?我们可以使用这样的自定义类rand(Range)吗?

ruby

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

标签 统计

async-await ×1

c# ×1

ruby ×1