小编Mic*_*hał的帖子

嵌套'if'语句的'else'

我有一个问题可以简化到这个:

parameters: a, b

if (a > 5)
{
    Print("Very well, a > 5");

    if (b > 7)
        Print("Even better, b > 7");
    else
    {
        Print("I don't like your variables");
    }
}
else
{
    Print("I don't like your variables");
}
Run Code Online (Sandbox Code Playgroud)

我想只使用一个else而不是两个,因为它们是相同的代码.我想到的是创建一个额外的方法,它将返回组合的true`false`,但这是一个严重的矫枉过正.

另一种选择是a goto,但这会使代码更不易读和不安全.

有什么方法可以做到这一点,避免多次检查相同的条件并使其尽可能可读?

c# c++ java if-statement

16
推荐指数
2
解决办法
4911
查看次数

枚举需要多少内存?

我需要决定是否enum在项目中使用我需要的大数组中的s.要做到这一点,我必须知道enum变量的大小.

enum Player 
{ 
     First, 
     Second, 
     Third, 
     Fourth 
};

private Player _owner;
Run Code Online (Sandbox Code Playgroud)

需要多少记忆_owner

我没有在C#中找到关于此的正确信息,这就是为什么这个C++和Java主题不适用的原因:Enums需要多少内存?

.net c# memory enums types

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

将float转换为至少包含一个小数位的字符串(javascript)

让我给你举个例子.

var a = 2.0;
var stringA = "" + a;
Run Code Online (Sandbox Code Playgroud)

我会得到:stringA = "2"但我想要:stringA = "2.0".

我不想丢失精度,所以如果:

var b = 2.412;
var stringB = "" + b;
Run Code Online (Sandbox Code Playgroud)

我想得到标准:stringB = "2.412".

这就是为什么toFixed()不能在这里工作.有没有其他方法可以做到,而不是明确检查这样的整数?:

if (a % 1 === 0)
    return "" + a + ".0";
else
    return "" + a;
Run Code Online (Sandbox Code Playgroud)

javascript

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

具有绝对路径的 C++ __FILE__ 宏

我试图在 C++ 编译时获取编译文件的绝对路径。我知道该__FILE__宏 - 但是,该宏可以计算为绝对路径或相对路径,具体取决于预处理器的参数。

我想确保我的__FILE__(或任何其他宏)计算结果为文件的完整绝对路径。有没有办法可靠地跨平台做到这一点?(我正在为 VS2013、VS2015、ubuntu 上的 GCC、MinGW 上的 GCC 进行编译)

c++ gcc preprocessor visual-studio

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

Python Protobuf 中高效的消息字段设置

我正在我正在开发的 Python 项目中使用 Protobuf (v3.5.1)。我的情况可以简化为以下内容:

// Proto file

syntax = "proto3";

message Foo {
    Bar bar = 1;
}

message Bar {
    bytes lotta_bytes_here = 1;
}

# Python excerpt
def MakeFooUsingBar(bar):
    foo = Foo()
    foo.bar.CopyFrom(bar)
Run Code Online (Sandbox Code Playgroud)

我担心的内存性能.CopyFrom()(如果我是正确的,它是复制内容,而不是引用)。现在,在 C++ 中,我可以使用如下内容:

Foo foo;
Bar* bar = new Bar();
bar->set_lotta_bytes_here("abcd");
foo.set_allocated_bar(bar);
Run Code Online (Sandbox Code Playgroud)

从生成的源来看,它看起来不需要复制任何内容:

inline void Foo::set_allocated_bar(::Bar* bar) {
  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
  if (message_arena == NULL) {
    delete bar_;
  }
  if (bar) {
    ::google::protobuf::Arena* submessage_arena = NULL;
    if (message_arena != submessage_arena) { …
Run Code Online (Sandbox Code Playgroud)

python protocol-buffers python-3.x protobuf-3

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

清单列出C#

如果我有一个这个并想要另一个例如,我有这个,

List<User> users = GetAllUsers();
Run Code Online (Sandbox Code Playgroud)

但我想要的是Listof名字,

List<string> firstNames = GetAllUsers();
Run Code Online (Sandbox Code Playgroud)

是否有可能转换List<Users>List<string>FirstName出去了箱子的?

编辑

FirstName是User对象的属性,它是字符串.

public class User
{
   public string FirstName{get; set;}
   public string LastName{get; set;}
   public string CustomProperty{get; set;}
}
Run Code Online (Sandbox Code Playgroud)

c#

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