开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 437|回复: 4
收起左侧

[已解决] 转成易语言问题

 关闭 [复制链接]
结帖率:85% (105/123)
发表于 2024-2-15 22:58:28 | 显示全部楼层 |阅读模式   广东省肇庆市
11精币
[JavaScript] 纯文本查看 复制代码
// Copyright (c) 2024 Hantong Chen(cxw620). MIT license.
// RE from `https://s1.hdslb.com/bfs/seed/log/report/log-reporter.js`
// Last Updated: 2024/1/12 16:33, js content md5: a6fa378028e0cce7ea7202dda4783781

fn main() {
    println!("{}", UuidInfoc::gen());
}

#[allow(dead_code)]
struct UuidInfoc;

#[allow(dead_code)]
impl UuidInfoc {
    pub fn gen() -> String {
        static DIGHT_MAP: [&'static str; 16] = [
            // Math.random() === 0 is really rare that probability is unlimited close to 0
            "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "10",
        ];
        let t = now!().as_millis() % 100_000;

        str_concat!(
            &random_choice!(8, 4, 4, 4, 12; "-"; DIGHT_MAP),
            &format!("{:0>5}", t),
            "infoc"
        )
    }
}

#[macro_export]
/// + Generates a random string by choosing ones from given candidates.
///
/// Candidates should be `Vec<&str>` or `[&'a str]`.
///
/// # Examples
///
/// ```
/// use crate::random_choice;
///
/// static DIGHT_MAP: [&'static str; 17] = [
/// "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "10",
/// ];
///
/// let rc_1 = random_choice!(32, DIGHT_MAP);
/// let rc_2 = random_choice!(8, 4, 4, 4, 12; "-"; DIGHT_MAP); // like `8310B0E0A-40105-9EC3-8298-36C75D10FEA59`
/// ```
macro_rules! random_choice {
    ($range: expr, $choice_set: expr) => {{
        let mut rng = rand::thread_rng();
        let mut result = String::with_capacity(32);
        (0..$range).for_each(|_| {
            result.push_str($choice_set[rand::Rng::gen_range(&mut rng, 0..$choice_set.len())]);
        });
        result
    }};
    ($($range: expr),+; $split: expr; $choice_set: expr) => {{
        let mut rng = rand::thread_rng();
        let mut result = String::with_capacity(32);
        $(
            (0..$range).for_each(|_| {
                result.push_str($choice_set[rand::Rng::gen_range(&mut rng, 0..$choice_set.len())]);
            });
            result.push_str($split);
        )+
        result.truncate(result.len() - $split.len());
        result
    }};
}

#[macro_export]
macro_rules! str_concat {
    ($($x:expr),*) => {
        {
            let mut string_final = String::with_capacity(512);
            $(
                string_final.push_str($x);
            )*
            string_final
        }
    };
}

#[macro_export]
/// Faster way to get current timestamp other than `chrono::Local::now().timestamp()`,
/// 12x faster on my machine.
///
/// See [`Duration`](https://doc.rust-lang.org/std/time/struct.Duration.html) for more details.
macro_rules! now {
    () => {{
        match std::time::SystemTime::now().duration_since(std::time::UNIX_EPOCH) {
            Ok(t) => t,
            Err(_) => panic!("SystemTime before UNIX EPOCH!"),
        }
    }};
}

上面这串代码怎么转成易语言  有大佬知道吗

最佳答案

查看完整内容

这段代码是Rust语言编写的,它定义了一个名为`UuidInfoc`的结构体,以及一些相关的宏(macro),用于生成一个类似于UUID的随机字符串。下面我将尝试将这段代码的核心功能翻译成易语言的等效代码。请注意,易语言没有直接的宏系统,所以我们将使用函数来模拟宏的行为。 首先,我们需要定义一个函数来生成随机字符串,类似于Rust中的`random_choice!`宏。然后,我们需要一个函数来拼接字符串,类似于`str_concat!`宏。最后,我们需 ...

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

结帖率:99% (121/122)

签到天数: 8 天

发表于 2024-2-15 22:58:29 | 显示全部楼层   贵州省贵阳市
这段代码是Rust语言编写的,它定义了一个名为`UuidInfoc`的结构体,以及一些相关的宏(macro),用于生成一个类似于UUID的随机字符串。下面我将尝试将这段代码的核心功能翻译成易语言的等效代码。请注意,易语言没有直接的宏系统,所以我们将使用函数来模拟宏的行为。

首先,我们需要定义一个函数来生成随机字符串,类似于Rust中的`random_choice!`宏。然后,我们需要一个函数来拼接字符串,类似于`str_concat!`宏。最后,我们需要一个函数来获取当前时间,类似于`now!()`宏。

以下是易语言的等效代码示例:

```epl
; 生成随机字符串的函数
函数 生成随机字符串(范围, 选择集合)
    定义 结果字符串
    定义 随机数生成器
    定义 索引
    循环 范围
        索引 = 随机数生成器.生成(0, 选择集合大小 - 1)
        结果字符串 += 选择集合[索引]
    结束循环
    返回 结果字符串
结束函数

; 拼接字符串的函数
函数 拼接字符串(字符串数组)
    定义 结果字符串
    循环 数组长度
        结果字符串 += 数组[当前索引]
    结束循环
    返回 结果字符串
结束函数

; 获取当前时间的函数
函数 获取当前时间()
    定义 当前时间 = 系统时间.现在() - UNIX纪元
    如果 当前时间错误
        错误提示("系统时间早于UNIX纪元!")
    否则
        返回 当前时间
    结束如果
结束函数

; 主函数
程序开始
    输出(拼接字符串({生成随机字符串(8, {"1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "10"}), "-", 生成随机字符串(5, {"1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "10"}), "infoc"))
程序结束
```

请注意,这个易语言的示例代码是一个简化的版本,它没有完全复制Rust代码的所有功能,比如处理错误和优化。在实际应用中,你可能需要根据易语言的具体语法和库进行调整。此外,易语言的字符串处理和随机数生成可能与Rust有所不同,所以这个示例可能需要进一步的调整以确保正确性。
48_avatar_middle_.gif

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:86% (12/14)
发表于 2024-2-15 23:41:57 | 显示全部楼层   浙江省台州市
你这不可能是JavaScript
回复

使用道具 举报

结帖率:100% (5/5)
发表于 2024-2-16 09:52:38 | 显示全部楼层   黑龙江省绥化市
xiaoyu1986 发表于 2024-2-16 05:35
这段代码是Rust语言编写的,它定义了一个名为`UuidInfoc`的结构体,以及一些相关的宏(macro),用于生成 ...

6666666666666666
回复

使用道具 举报

结帖率:100% (20/20)

签到天数: 9 天

发表于 2024-2-16 10:27:32 | 显示全部楼层   浙江省杭州市
程序_生成GUID()
程序_COM生成GUID()
精益模块
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表