小编THU*_*OVE的帖子

if语句总是执行

我的if声明遇到了彼此的问题.这是我的代码:

std::cout << "1) Option 1\n";
std::cout << "2) Option 2\n";
std::cout << "3) Option 3\n";
std::cout << "4) Option 4\n";
std::cout << "Type your choice and hit ENTER \n";

std::cin >> Choice;

if(Choice == 1); 
{
std::cout << "Blah Blah\n";
}
if(Choice == 2);
{
std::cout << "Blah Blah\n";
}
if(Choice == 3);
{
std::cout << "Blah Blah\n";
}
if(Choice == 4);
{
std::cout << "Blah Blah\n";
}
Run Code Online (Sandbox Code Playgroud)

通过相互碰撞我的意思是:它只会忽略我的if语句并运行我的所有代码,所以它只会打印出来:

Blah Blah
Blah Blah
Blah Blah …
Run Code Online (Sandbox Code Playgroud)

c++ if-statement visual-c++

4
推荐指数
2
解决办法
1659
查看次数

接口存储为值; 无法更新结构字段的方法

我有一个我正在编写的工具,它公开了一些函数,这些函数将信息从静态数据库中提取到我正在嵌入到工具中的几种脚本语言中.

我想; "嘿听起来像接口的一个很好的用例".所以我在我的包脚本中定义了这样的接口

type ScriptingLang interface {
    RunScript(filename string) error
    RunString(s string) error
    Interpreter() error
    Init() error
    IsInit() bool
}
Run Code Online (Sandbox Code Playgroud)

然后我存储了它们的地图,以便我可以通过在不同包中定义的字符串来查找它们.

var ScriptingLangs = make(map[string]scripting.ScriptingLang)
Run Code Online (Sandbox Code Playgroud)

以及注册它们的功能.还有一些小助手的功能就像

func RunString(lang, s string) error {
    if v, ok := ScriptingLangs[lang]; ok {
        if !v.IsInit() {
            v.Init()
        }
        return v.RunString(s)
    } else {
        return NoSuchLangErr
    }
    return nil
 }
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是接口不能有带指针接收器的方法.因此,我实现ScriptingLang的Lua结构无法保存它的*状态,因为它存储在ScriptingLangs中.

我已经尝试在保存状态的函数结束时更新存储在映射中的值,但它没有更新值.

据我所知,你不应该使用接口指针,所以我的选择是什么?我想保留接口,以便我可以用git子模块做一些简洁的东西.

我的问题的一个最小例子:

package main

import (
    "fmt"
)

type ScriptingLang interface {
    DoString(s string) error
    Init() error
}

type Lua struct {
    state …
Run Code Online (Sandbox Code Playgroud)

pointers interface go

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

将dict附加到列表中

我正在为机器人团队编写程序,我在竞争期间收集数据,找到最佳团队与"联盟".它需要收集大约20个值,并且需要能够通过各种参数列出数据.我已经完成了很多框架,但似乎当我将数据附加到列表时,它会在我追加时将所有条目更改为.

例如,如果我有

data = [{"teamNumber":1345,"teamName":"Blah"}]
Run Code Online (Sandbox Code Playgroud)

并尝试追加

{"teamNumber":3219,"teamName":"TREAD"}
Run Code Online (Sandbox Code Playgroud)

使用append()来获取数据我最终得到了

data = [{"teamNumber":3219,"teamName":"TREAD"},{"teamNumber":3219,"teamName":"TREAD"}]
Run Code Online (Sandbox Code Playgroud)

目前我们正在使用此功能添加数据(它有大部分不必要的"肉"修剪)

def inputTeamData(): 
    global data
    clear()
    temp = dataTemplate

    temp["teamNumber"] = question("Team Number?: ")
    temp["teamName"] = question("Team Name?: ")
    temp["foundingSeason"] = question("Founding Season?: ")

    save = question("Is the above data correct?(y/n): ")


    if save.lower() == "y":
        try:
            data.append(temp)
        except ValueError:
            print "ValueError. You gave me the wrong data types"
            sleep(1)

            else:
                print "Not saved"
                sleep(.8)
Run Code Online (Sandbox Code Playgroud)

我不知道是什么给了,即使答案更可能是愚蠢的显而易见我无法找到问题.

无论如何,非常感谢任何可以帮助我的人的建议!

python python-2.7

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

标签 统计

c++ ×1

go ×1

if-statement ×1

interface ×1

pointers ×1

python ×1

python-2.7 ×1

visual-c++ ×1