小编Fat*_*ror的帖子

从0到255生成随机u8

我正在尝试制作一个程序,生成从0到255的随机数.看起来很简单!我这样做了:

extern crate rand;
use rand::Rng;

fn main() {
    println!("Guess the number!");
    let random_number: u8 = rand::thread_rng().gen_range(0, 255);

    println!("Your random number is {}", random_number);
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但这种方法的问题是不包括数字255:

gen_range方法将两个数字作为参数,并在它们之间生成一个随机数.它包含在下限但在上限独占.

当我尝试这样做时:

let random_number: u8 = rand::thread_rng().gen_range(0, 256);
Run Code Online (Sandbox Code Playgroud)

Rust将生成警告,因为u8只接受0到255之间的值.

warning: literal out of range for u8
 --> src/main.rs:6:61
  |
6 |     let random_number: u8 = rand::thread_rng().gen_range(0, 256);
  |                                                             ^^^
  |
  = note: #[warn(overflowing_literals)] on by default
Run Code Online (Sandbox Code Playgroud)

如何在不改变random_number变量类型的情况下解决这个问题?

random rust

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

在箭头函数中通过引用使用变量

PHP 7.4 引入了箭头函数。它还引入了隐式按值范围绑定,从而消除了对use关键字的需要。

现在,如果我们想通过引用常规匿名函数来使用闭包范围之外的变量,我们将这样做:

$num = 10;
call_user_func(function() use (&$num) {
$num += 5;
});
echo $num; // Output: 15
Run Code Online (Sandbox Code Playgroud)

但是使用箭头函数似乎是不可能的

$num = 10;
call_user_func(fn() => $num += 5);

echo $num; // Output: 10
Run Code Online (Sandbox Code Playgroud)

那么如何$num通过引用来使用变量呢?

php pass-by-reference arrow-functions php-7.4

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

致命错误:未捕获类型错误:不支持的操作数类型:string + int in

这是我的错误标题:

致命错误:未捕获类型错误:不支持的操作数类型:C:\xamppp\htdocs\file\thefile\config.php 中的 string + int:105 堆栈跟踪:#0 C:\xamppp\htdocs\file\thefile\category.php( 84): alphaID('f', true) #1 {main} 在第 105 行 C:\xamppp\htdocs\file\thefile\config.php 中抛出

第105行的错误:

{$out = $out + strpos($index, substr($in, $t, 1)) * $bcp;}
Run Code Online (Sandbox Code Playgroud)

这是代码:

<?php

//fungsi encrypt id
function alphaID($in, $to_num = false, $pad_up = false, $pass_key = null)
{
  $out   =   '';
  $index = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  $base  = strlen($index);

  if ($pass_key !== null) {

    for ($n = 0; $n < strlen($index); $n++) {
      $i[] = substr($index, $n, 1);
    }

    $pass_hash = hash('sha256',$pass_key);
    $pass_hash = …
Run Code Online (Sandbox Code Playgroud)

php php-8

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

Strict_types 不影响 array_walk

在处理以下代码时,我注意到这declare(strict_types=1)对回调函数的参数没有影响array_walk()

<?php
declare(strict_types=1);

function myCallBack(int $value, $key) {

    echo $value;
}

function myFunc(int $value, $key) {
    echo $value;
}

$myArr = array("eggs" => 4, "Butter" => 4, "meat" => 4.5);

echo 'myCallBack..';
array_walk($myArr, 'myCallBack'); // Output: 444 

echo ' <br />myFunc..';
myFunc(4.2, 'eggs'); // Output:Fatal error: Uncaught TypeError: Argument 1 passed to myFunc() must be of the type integer

?>
Run Code Online (Sandbox Code Playgroud)

我期待 php 抛出异常而不是444因为 [meat] 值$myArr不是整数!

显然 php 忽略了 [meat] in$myArrfloat …

php callback array-walk

5
推荐指数
0
解决办法
324
查看次数

用于创建 Lambda 的 AWS Java SDK 版本

我正在尝试按照此处描述的指南开发 AWS Java lambda 函数,该指南描述了RequestHandler接口的实现并引用了 AWS-lambda-java-core 库。但是,我正在尝试使用此处推荐的最新 SDK,但这完全不同,并且RequestHandler界面似乎不再存在。

我不清楚我需要的 Java 库的名称和版本是什么。是否有关于所有不同版本的 AWS Java 库的指南以及任何更新的示例?我不得不承认我对 AWS Java 库版本和命名完全感到困惑,并且不完全知道我需要添加哪些/什么作为依赖项,只是为了在 Java 中创建一个简单的 AWS Lambda 函数。

java amazon-web-services aws-java-sdk

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

如何授予 VS Code 权限以修改 Windows Subsystem for Linux 中的文件

我将 VS Code 连接到 WSL,当我尝试在我的index.php文件中保存更改时,会显示以下消息。

在此处输入图片说明

我试图改变的权限var/www/html使用chmod,但什么都没有改变。

那么如何让VS代码修改文件呢?

linux windows-10 visual-studio-code windows-subsystem-for-linux

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

有预加载文件时 Apache 无法启动

我刚装了Opcache,一切似乎工作得很好,但是当我在添加一个PHP文件opcache.preloadphp.ini并重新启动Apache服务器无法启动。另一方面,在 CLI SAPI 中预加载工作正常!

当我注释掉opcache.preload并重新启动时,Apache 服务器工作

由于这个问题没有发出任何错误,我查找了 Apacheerror_log文件,结果发现问题是我没有定义 opcahe 预加载用户

尚未定义致命错误“opcache.preload_user”

但根据PHP 文档

出于安全原因,不允许以 root 身份预加载代码。该指令有助于让预加载以另一个用户身份运行。

我在我的个人电脑上工作,在WSL下运行 Ubuntu

所以请指导我我该怎么做?我应该添加什么用户?

php apache php-7.4

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

PHP 8.1 中的永不返回类型是什么

PHP 8.1 引入了never返回类型,它是什么?是什么样的区别nevervoid

php return-type php-8.1

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

如何捕获特征未找到错误PHP 7

从PHP 7开始,可以Fatal Errors通过捕获Error类或Throwable接口来捕获,但由于某种原因,当触发"致命错误:未找到特征"时,我无法做到这一点.

try {
    class Cars {
        use Price;
    }
} catch (Error $e) {
    echo $e->getMessage(); // Output : Fatal error: Trait 'Price' not found in [..] on line [..]
} 
Run Code Online (Sandbox Code Playgroud)

没有抓到错误!! 所以我想出了一个解决方案

try {
    if (trait_exists('Price')) {
        class Cars{
            use Price;
        }
    } else {
        throw new Error('Trait Price not found');
    }

} catch (Error $e) {
    echo $e->getMessage(); // Output : Trait Price not found
}
Run Code Online (Sandbox Code Playgroud)

为什么Fatal Error在第一个例子中没有被抓住? …

php traits fatal-error

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

通过纯枚举实现 JsonSerialized

根据PHP手册

如果将 Pure Enum 序列化为 JSON,则会抛出错误。如果将支持的枚举序列化为 JSON,则它将仅由其值标量以适当的类型表示。两者的行为都可以通过实现 JsonSerialized 来覆盖

让我们尝试实现一下JsonSerializable

enum Suit implements JsonSerializable
{
    case Hearts;
    case Diamonds;
    case Clubs;
    case Spades;
    
    public function jsonSerialize(): array {
        return [1, 2, 3, 4];
    }
}

echo json_encode(Suit::cases());
Run Code Online (Sandbox Code Playgroud)

它打印:

[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]]
Run Code Online (Sandbox Code Playgroud)

为什么[1,2,3,4]重复4次?

如何控制enum序列化过程中的每个案例?

php enums php-8.1

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