问题列表 - 第318114页

如果空数组条目位于数组末尾,YAML 将忽略它们

我有一个简单的代码,可以读取 YAML 文件并将其转储回 CSV:

my @data = YAML::LoadFile(${$testplan_path});
    foreach (@{$data[0]}) {
      print "HERE\n";
      print Dumper $_;
      print "\n";
      # Print each yaml array into a csv
      $csv->print($CSVFILE, $_);
      # Add new line
      print $CSVFILE "\n";
    }
Run Code Online (Sandbox Code Playgroud)

除了 YAML 文件在数组末尾有空条目的情况之外,这种方法工作得很好。

- [Title                             ,Description   ,Type       ,Data                     ,Owner    ,Milestone   ,Tags            ]
- [gfc200 Testplan                   ,              ,Header     ,1                        ,         ,            ,"ONE,TWO"       ]
- [Design Checks                     ,              ,testplan   ,design_checks.yaml       ,harwhi01 ,            ,                ]
Run Code Online (Sandbox Code Playgroud)

上述 3 行 YAML 的 print/dump 输出如下:

HERE
$VAR1 = [
          'Title', …
Run Code Online (Sandbox Code Playgroud)

perl yaml

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

为什么最新的 clang 没有定义功能测试宏 __cpp_coroutines?

#include <iostream>

int main() {
#if __has_include(<coroutine>)
    std::cout << "__has_include(<coroutine>)" << std::endl;
#endif

#if defined(__cpp_impl_coroutine)
    std::cout << "__cpp_impl_coroutine is defined." << std::endl;
#endif

#if defined(__cpp_coroutines)
    std::cout << "__cpp_coroutines is defined." << std::endl;
#else
    std::cout << "__cpp_coroutines IS NOT defined!" << std::endl;
#endif
}
Run Code Online (Sandbox Code Playgroud)

我的编译器是 clang-18.1.0。

使用 构建代码clang++ -std=c++20 -stdlib=libc++ ./main.cpp,输出为:

__has_include(<coroutine>)
__cpp_impl_coroutine is defined.
__cpp_coroutines IS NOT defined!
Run Code Online (Sandbox Code Playgroud)

为什么最新的 clang 没有定义功能测试宏 __cpp_coroutines?

c++ clang compiler-bug c++20 c++-coroutine

0
推荐指数
1
解决办法
85
查看次数

C++ 在模板参数和 lambda 的“auto”参数之间转发引用方面的差异

比较以下两种情况:

template<class... Args>
void f1(Args&&... args) { do_smth(std::forward<Args>(args)...); }

auto f2 = [](auto&&... args) { do_smth(std::forward<decltype(args)>(args)...); };
Run Code Online (Sandbox Code Playgroud)

std::forward传递或不传递的类型是否有任何差异?

根据我的理解,当您使用 , 指定转发引用时T&&&&并不与传递的参数“匹配”,而是一种将“原始引用”信息“存储”到T(T将是&, const &,&&const &&根据值类别传递的参数),然后将此类“原始引用”信息结合起来,使用通常的规则等&&计算最终的引用类型。& + && = &

我不知道的是,是否decltype(args)会解析为此类计算“之前”或“之后”的类型,或者结果类型是否与“原始引用”不同,因此指定的类型是否有任何差异std::forwardf1f2.

注意:我不能使用 C++20,并且模板 lambda 不在问题范围内。

c++ reference rvalue-reference forwarding-reference c++17

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

将 toml 文件中的字符串反序列化为 MacAddr6

我有一个 toml 文件,其中包含 id 和 mac 对,如下所示:

[[component]]
id = 1
mac = "d4:d7:04:c9:85:a4"
[[component]]
id = 3
mac = "3c:21:ee:b4:0d:ab"
[[component]]
id = 6
mac = "ea:f3:23:8c:b8:c1"
Run Code Online (Sandbox Code Playgroud)

目标是将此文件反序列化为该文件的 Vec structMacAddr6属于macaddr板条箱:

[[component]]
id = 1
mac = "d4:d7:04:c9:85:a4"
[[component]]
id = 3
mac = "3c:21:ee:b4:0d:ab"
[[component]]
id = 6
mac = "ea:f3:23:8c:b8:c1"
Run Code Online (Sandbox Code Playgroud)

当我尝试反序列化时,显示此错误:

内部:TomlError {消息:“无效类型:字符串“d4:d7:04:c9:85:a4”,期望长度为6的数组”

如果我在结构定义中更改MacAddr6String并且一切正常,那么我有一个解决方法。尽管如此,由于MacAddr6实现了serde::Deserializecore::str::FromStr我希望一次性检索完整的结构。我究竟做错了什么?

rust deserialization toml

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

包中的 Perl 子例程用于修改其外部的哈希值

总结一下:

  • 我有一个主脚本,里面有一个哈希值
  • 这个主脚本调用一个包,其中我有一个子例程,我想从中修改这个全局哈希的内容(向其中添加元素)

这是我放入 /tmp 中的代码的极其简化的提取,以说明我的问题:

主脚本(/tmp/nonstdtest.pl):

#!/usr/bin/perl

use lib '/tmp';

use TEST;
use Data::Dumper;

my %nonstd;

tNumber(\%nonstd);

print Dumper(\%nonstd);
Run Code Online (Sandbox Code Playgroud)

包(/tmp/TEST.pm):

package TEST;

use strict;
use warnings;

use Exporter;

our @ISA= qw( Exporter );
our @EXPORT_OK = qw( tNumber );
our @EXPORT = qw( tNumber );

sub tNumber {

   my $nonstd      = shift;
   $nonstd      = %$nonstd;

   $nonstd{'example'} = 'test_here';

}
Run Code Online (Sandbox Code Playgroud)

问题,输出是:

Global symbol "%nonstd" requires explicit package name at /tmp/TEST.pm line 15.
Compilation failed in require at /tmp/nonstdtest.pl line 5. …
Run Code Online (Sandbox Code Playgroud)

perl reference

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

新的单独 AWS VPC 是否会对网络产生任何影响?

我创建了一个新的单独的 AWS VPC,其 CIDR 为“10.10.0.0/16”。该网络是否会与现有的 Versatile 云网络之一(特别是 10.10.10.0/24)发生冲突?

cidr amazon-web-services amazon-vpc

0
推荐指数
1
解决办法
25
查看次数

在模板类型中使用 decltype 时模板专业化失败

我定义了以下模板结构:

template<typename T>  struct somestruct {}; 
Run Code Online (Sandbox Code Playgroud)

现在有以下专业:

template<typename T> struct somestruct <std::vector<T>>                {};  // OK
template<typename T> struct somestruct <decltype(std::vector<T>  {})>  {};  // KO
Run Code Online (Sandbox Code Playgroud)

但是,最后一个专业化不会编译并出现以下错误(请参阅此处):

error: template parameters not deducible in partial specialization:
Run Code Online (Sandbox Code Playgroud)

天真地,我会说这两个专业并没有那么不同,就像下面这样:

template<typename T> void test ()  
{ 
    static_assert (std::is_same_v<std::vector<T>, decltype(std::vector<T>{})> );
}
Run Code Online (Sandbox Code Playgroud)

问题:导致编译器第二个专业化失败的技术原因是什么?有没有办法解决它(我的意思是我的代码,而不是编译器)?

有一篇旧帖子似乎很相似,但也许 things/compiler/c++ 可能已经改变。

c++ decltype template-specialization c++20

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

Cypress - 验证列表(列)的字母顺序排序

我有一个包含这样的列的表(简化):

\n
| ... | ... | Venter p\xc3\xa5 s\xc3\xb8ker | ... |\n| ... | ... | Ikke p\xc3\xa5begynt   | ... |\n
Run Code Online (Sandbox Code Playgroud)\n

该表有 21 行。

\n

相关列可以按字母顺序、降序或升序排序。

\n

我想做的是让 Cypress 验证排序、升序和降序。

\n

到目前为止我所得到的:

\n
cy.get([data-e2e-selector=tabell]).get('[data-e2e-selector=kolonne]')\n  .then(items => {\n    const unsortedItems = items.map((index, html) => Cypress.$(html).text()).get();\n    const sortedItems = unsortedItems.slice().sort()\n    expect(unsortedItems, 'Items are sorted').to.deep.equal(sortedItems);\n  });\n
Run Code Online (Sandbox Code Playgroud)\n

我想做的是从列中获取所有项目并将它们存储在列表中。然后创建一个包含相同项目但已排序的列表。然后比较两者。我已经成功地对日期戳(数字)做了类似的事情,但按字母顺序排序似乎让我困惑。

\n

上面的代码会导致此错误(升序或降序相同):

\n
assert expected Items are sorted: to deeply equal [ Array(21) ]\n
Run Code Online (Sandbox Code Playgroud)\n

为了验证我是否确实将元素放入列表中 - 如果我比较 unsortedItems[] 和sortedItems[] 列表的第一个或最后一个项目,它们是相同的:

\n
expect(unsortedItems, …
Run Code Online (Sandbox Code Playgroud)

sorting alphabetical cypress

-1
推荐指数
1
解决办法
65
查看次数

如何在ggplot2中创建多个y轴(每个变量一个)

我想绘制一个类似于平行坐标图的图来进行描述性统计。我想绘制按性别分层的每个变量的平均值和标准差。

在此输入图像描述

不幸的是,我无法找到为每个变量创建自己的 y 轴的方法。

它看起来应该与此图类似,但使用平均值和标准差而不是每一行。

在此输入图像描述

这篇文章中,他们创建了另一个图,但我无法根据我的需求和数据进行调整,因此平均值和标准差如上图所示。

这是我的数据和代码:


library(dplyr)
library(tidyr)
library(ggplot2)

my_data <- data.frame(
  sex = c("m", "w", "m", "w", "m", "w"),
  age = c(25, 30, 22, 35, 28, 46),
  testosterone = c(450, 200, 400, 300, 500, 350),
  cognition = c(75, 80, 70, 85, 78, 90),
  estrogen = c(20, 40, 15, 50, 10, 45)
)

numeric_vars <- c("age", "testosterone", "cognition", "estrogen")

# Calculate means and standard deviations for each sex and each variable
df_means <- my_data %>%
  group_by(sex) %>% …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 parallel-coordinates

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

是什么导致我的数字达到疯狂的值?

只是故意重复 if 语句程序来进行备用更改,但由于未知原因,它会拍摄应该为 0 的数字到某个最大值?我真的很想得到一些帮助来解释为什么

#include <stdio.h>

int main(void) {

   int a;
   int b;
   int c;
   int d;
   int e;
   int cha;
   
   scanf("%d", &cha);
   
   if(cha == 0){
      printf("No change\n");
      return 0;
   }   
   if(cha >= 100){
      a = cha / 100;
      cha = cha % 100;
   }
   if(100> cha && cha >= 25){
      b = cha / 25;
      cha = cha % 25;
   }
   if(25 > cha && cha >= 10){
      c = cha / 10;
      cha = cha % 10; …
Run Code Online (Sandbox Code Playgroud)

c

0
推荐指数
1
解决办法
112
查看次数