如何将基板模块中的块号转换为整数类型?

2024-01-25

我正在测试Substrate Off-chain Worker,我想做的是接收当前的块号,然后进行一些计算,就像下面的代码if (get_block / 10 == 0),我得到一些错误。如何将块号转换为Integer类型?

my code

use frame_support::{decl_storage, decl_module, dispatch::DispatchResult, debug};

use frame_system::{ensure_signed, offchain};

use sp_runtime::{
  offchain::http,
  transaction_validity::{
    TransactionValidity, TransactionLongevity, ValidTransaction, InvalidTransaction
  }
};

pub trait Trait: frame_system::Trait {}

decl_storage! {
    trait Store for Module<T: Trait> as Runtime_example {
        SubjectCount: u32;        
    }
}
decl_module! {
    pub struct Module<T: Trait> for enum Call where origin: T::Origin {
        fn offchain_worker(block: T::BlockNumber){
            let get_block = block;
            if (get_block / 10 == 0) {  
               debug::info!("print !!!!!!!!!!!!!!!!");               
            }            
        }
    }
}

错误日志

error[E0308]: mismatched types
  --> /home/substrate-node-template/runtime/src/runtime_example.rs:32:29
   |
32 |             if (get_block / 10 == 0) {  
   |                             ^ expected associated type, found integer
   |
   = note: expected associated type `<T as frame_system::Trait>::BlockNumber`
                         found type `{integer}`
   = help: consider constraining the associated type `<T as frame_system::Trait>::BlockNumber` to `{integer}` or calling a method that returns `<T as frame_system::Trait>::BlockNumber`

error[E0308]: mismatched types
  --> /home/substrate-node-template/runtime/src/runtime_example.rs:32:34
   |
32 |             if (get_block / 10 == 0) {  
   |                                  ^ expected associated type, found integer
   |
   = note: expected associated type `<T as frame_system::Trait>::BlockNumber`
                         found type `{integer}`
   = help: consider constraining the associated type `<T as frame_system::Trait>::BlockNumber` to `{integer}` or calling a method that returns `<T as frame_system::Trait>::BlockNumber`

@kmdreko 是对的。您不想将块号转换为整数,而是将整数转换为块号,然后进行数学运算。

所以替换:

get_block / 10 == 0

With:

(get_block / 10.into()).is_zero()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将基板模块中的块号转换为整数类型? 的相关文章

随机推荐

  • 复制省略法

    从复制省略法的标准定义来看 在 C 计算机编程中 复制省略是指消除不必要的对象复制的编译器优化技术 让我们考虑以下代码 include
  • java初学者if/else if问题

    尝试设置 String 变量的代码块似乎出了问题 因为无论我运行程序时做什么 对话框总是显示 otto txt 有谁知道我在这里做错了什么 谢谢 猎食 import java awt FlowLayout import java awt e
  • 如何用 python 显式绘制 y 轴

    I used pp yscale log 在我的 python 脚本中绘制一个以对数刻度显示 y 刻度的图形 然而 图中并没有出现y轴 有没有办法在python中显式显示y轴 leg pp legend series labels loc
  • 适用于 iPhone 的 Flex 应用程序

    是否可以使用 Adob e Flex AIR 为 iPhone 制作应用程序 有教程 指点吗 不 我不相信你能做到 尽管 iPhone 支持 Flash 的传闻已经有一段时间了 但它仍然未能实现 预计到达时间 看来现在这是可能的 http
  • RestSharp 序列化为 JSON,对象未按预期使用 SerializeAs 属性

    我在用休息锐利 通过 NuGet 的版本 104 4 调用 Rest Web 服务 我设计了一组与 API 中公开的资源相匹配的对象 POCO 但是 我的对象属性名称与发布数据时 Rest 服务所期望的名称不匹配 因此当我向 Rest 服务
  • Swagger 永久授权令牌

    我正在 ASP NET Core MVC 中开发 Web api 我想知道是否有一种方法可以使swagger中的授权令牌持久化 这样就不需要每次运行应用程序时都手动进行授权 这将使测试变得更容易 您可以使用persistAuthorizat
  • 如何在 WinDbg 扩展中基于转储文件内存创建对象?

    我负责开发一个大型应用程序 并经常使用 WinDbg 根据客户提供的 DMP 文件来诊断问题 我为 WinDbg 编写了一些小扩展 事实证明它们对于从 DMP 文件中提取信息非常有用 在我的扩展代码中 我发现自己以相同的方式一遍又一遍地手动
  • 强制 iOS 设备改变方向

    首先 我很抱歉再次提出同样的问题 这个问题已经在这个论坛上被问过很多次了 但是 我的问题是我已经尝试了所有建议的解决方案 但仍然没有解决我的问题 我有一个ViewControllerA在肖像模式下和ViewControllerB在横向模式下
  • Google 地图 API v3 - GIcon 未定义

    我知道 v2 到 v3 存在一些问题 我可以在这里做什么来解决它 v3 不支持 GIcon Google Map icon object var gMapIcon new GIcon G DEFAULT ICON change to new
  • 使用 data.table 包进行条件二进制连接和引用更新

    这是我现实生活中的问题 我觉得可以很容易地解决 但我在这里遗漏了一些明显的东西 我有两个大数据集TK and DFT library data table set seed 123 TK lt data table venue id rep
  • 远程调试符号文件格式

    有谁知道远程调试符号文件的文件格式 项目 gt 选项 gt 链接 gt 包括远程调试符号 None
  • 在Python中声明编码[重复]

    这个问题在这里已经有答案了 我想使用以下代码在 python 中分割字符串 means a b c lst means split 但我收到此错误消息 SyntaxError 文件 dict py 第 2 行中存在非 ASCII 字符 xd
  • 使用 Autofac 解析 MVC5 应用程序中的 IOwinContext

    我使用时遇到问题MembershipReboot使用新的 ASP MVC5 模板和Autofac 我使用默认的 MVC5 模板来设置站点 然后尝试连接MembershipReboot框架作为模板附带的 ASP Identity 框架的替代品
  • 如何使用 JavaScript 将引导图标添加到画布上?如果有办法的话

    这是我到目前为止所尝试过的 ctx setAttribute class glyphicon glyphicon time 但是也 var icon document createElement span icon className gl
  • 有什么方法可以将自定义元素的模板标记和样式保留在 JavaScript 字符串之外?

    这是使用自定义元素的示例开发者 google com https developers google com web fundamentals web components customelements let tmpl document
  • R:在一页上打印多种类型的绘图

    我正在尝试在一页上绘制多个图 我知道像这样的函数gridExtra grid arrange可以绘制由以下生成的图表ggplot2包裹 我面临的问题是我有两个地块 bar plot and density plot如下 是由生成的ggplo
  • 如何在正在运行的线程上调用方法?

    在控制台应用程序上 我当前正在启动一组线程 线程被传递一个对象并在其中运行一个方法 我想知道如何在各个运行线程内的对象上调用方法 调度员不工作 SynchronizationContext Send 在调用线程上运行 Post 使用新线程
  • 如何从两个列表中删除一个列表中的目录?

    我正在编写一个 c shell 脚本 其中我正在两个字符串中 grep 两个不同的目录 我想删除相同目录的名称 我只想要两个目录中唯一的目录 而忽略重复的目录 我对如何做到这一点有点困惑 sta views 和 pnr views 字符串中
  • Git 推送到错误的存储库 - 需要将我的本地存储库重命名为我远程创建的存储库

    我对 git 还比较陌生 我想我已经把自己逼到了墙角 为了测试一些功能 我在本地复制并粘贴了一个存储库目录 我知道 绝对错误的做法 我没有想到 从那时起 我一直在工作并创建分支机构 我希望保持这种进步 当然 当我尝试设置一个新的存储库并推送
  • 如何将基板模块中的块号转换为整数类型?

    我正在测试Substrate Off chain Worker 我想做的是接收当前的块号 然后进行一些计算 就像下面的代码if get block 10 0 我得到一些错误 如何将块号转换为Integer类型 my code use fra