作为一个练习,我试图在Haskell实现一个游戏。我似乎还没有掌握IO的工作原理。我读到,为了使getLine返回的IO字符串在纯代码中可用,这样的东西可以工作:
main = do
foo <- getLine
do_something_with foo
我最后得到的代码变得稍微复杂一些,我不明白为什么它不能工作。我的代码如下所示:
game_loop game = do
show game
coords <- getLine
game_loop (add_move game (parse_coords coords))
main = game_loop n
我被困在这里了,我不知道什么时候设置输入。例如,->“柠檬树”,(在这里我设置了(输入)来读取它的双时间函数getline),它给了我错误的输出,比如“柠檬特E”--我对此做了更详细的解释,问题是我如何能够更改getline(我修改的函数)的代码并将输出分离出来,这是我的函数getline,这是我想要的视觉效果。我使用k&r-ansii书中的函数(小修改):
int getline(char *line, int len)
{
int i,c;
for ( i =0;i<len-1 && (c = getchar()) != EOF &
在这个非常简单的程序中,我一直收到错误,但我不知道为什么。帮助!
//This program will calculate a theater's revenue from a specific movie.
#include<iostream>
#include<iomanip>
#include<cstring>
using namespace std;
int main ()
{
const float APRICE = 6.00,
float CPRICE = 3.00;
int movieName,
我正在努力完成我的实验室,但是我不知道如何分配内存给一个字符串。所以我一直得到错误的warning: ‘_name’ is used uninitialized in this function [-Wuninitialized]
我也不明白我的getline线是否正确。
std::istream& operator>>(std::istream& is, Grade& RO){
int _mark;
char* _name;
std::cout<<"Subject name: ";
is.ign
我想编写一个简单的函数,从控制台读取字符串并将其解析为自定义数据类型。
我的尝试:
data Custom = A | B Int | C String deriving Read
getFormula::IO Custom
getFormula = do
putStrLn("Introduce una formula: ")
toParse <- getLine
return read toParse::Custom
但是这不起作用,我也不知道如何解释产生的编译错误。我该怎么解决这个问题?对于IO功能是如何工作的,我有什么误解?
编辑:这是
我有一个网站表,它有一个指向客户端表的外键。一个网站并不总是有一个关联的客户端,但是当我保存一个没有指定客户端的网站时,它就会出错,因为Website.ClientID是一个int32 (不可为空),并且被设置为0。
我尝试将EF图中的关系更改为网站旁边的*和客户端旁边的0..1,但是它给出了一个错误,指出不能为ClientID做0..1,因为它不可为空。然后我将Website.ClientID更改为可以为空,但是现在它给出了这个错误:
TothSolutions.msl(69,10) : error 3031: Problem in mapping fragments starting
a
我想问一个问题。我是哈斯克尔的biginner,我有一些困难与非常简单的程序,这应该告诉我,如果除数%除法器== 0。
我有这样的代码:
f::Integer -> Integer -> Bool
f x y = if ((x `mod` y) == 0) then True
else False
main = do putStrLn "Set up dividend"
x <- getLine
putStrLn "Set Up divider"
当我从运行下面的示例代码时,会得到以下错误:
error: value of type 'basic_istream<char, std::__1::char_traits<char> >' is not contextually convertible to 'bool'
while (std::getline(in, line)) {
我在答案中看到,从C++11开始,getline()返回一个流的引用,当它在布尔上下文中使用时,该流被转换为bool。但是,我不明白为什么我的代码中的流不能“上下文可转换”到bool。你能解释一
来自我的C大学的书“C编程语言”,作者是Brain W.Kernighan和Dennis M.Ritchie。节目单1-20。
编写一个程序detab,用适当的空格数替换输入中的制表符,直到下一个制表符停止。假设有一组固定的制表符,例如每n列。N是变量还是符号参数?
#include <stdio.h>
#define TABSTOP 8
#define MAXLINE 1000
int getline(char s[], int len);
int main()
{
char line[MAXLINE];
while ((getline(line, MAX
我是Haskell的新手,我想用列表来制作一个程序。我想从键盘上读取下一个元素,并将所有内容附加到我现有的列表中。因为我使用了数据类型,所以我不知道如何在名为cars的列表中添加包含所有这些细节的新车。我知道let ls = name:model:color:year:price:coin:[cars]序列是错误的,我也不知道如何使它工作。有人能告诉我我在这里能做些什么吗?
type Name = String
type Model = String
type Color= String
type Year = String
type Price = String
type Coin = St
我试图在XCode中添加一个符号断点,以检查后台线程上的UI引擎修改。
我要做的是:
但是,我得到的错误消息总是:
Stopped due to an error evaluating condition of breakpoint 5.1: "!Thread.isMainThread"
Couldn't parse conditional expression:
error: use of undeclared identifier 'Thread'
UI Engine must be modified on main thread.
我不
一个玩具示例,但仍然令人沮丧:
numberMapper:: IO ()
numberMapper = do codes <- forM [1 .. 4] (\num ->
do putStrLn $ "Enter a code for " ++ show num
code <- getLine
return code)
let numberCodes = zip [1 .. 4] codes
我在Haskell还是个初学者,我在路上遇到了一个相当恼人的颠簸。在我目前的阶段,我只是试图将一个列表从我的main函数传递到另一个函数中,然后打印出来,我不明白为什么它不能工作。
在我的脑海里,我觉得我应该能够:
main = do
putStrLn "-----Text Editor-----"
putStrLn "Please enter your text"
leftString <- getLine
putStrLn $ "\n\n" ++
我确实理解长文字不适合整型变量,只要我不强制转换它:
long y = 1000000L;
int x = y; // error - lossy conversion
我不明白的是,为什么在int范围内使用int文本会产生同样的错误:
long y = 100;
int x = y; // error - lossy conversion
整数的默认文本是'int',为什么我不能做这种操作呢?我得到的唯一答案是,虽然将变量声明为long,但Java将值存储为long值,即使我没有附加"L“后缀,但我希望得到一个”官方“解释。
我已经到处找过了,但我找不到一个解决方案来确切地解释为什么在我的情况下会发生这种情况。
我正在做一个简单的字符串函数,它请求一个字符串,并打印出长度。
但是,当我运行编译后的版本时,我得到一个"Invalid Null Pointer“断言错误。我在编译的时候没有错误,但是当我运行它的时候出现了错误。
这是导致问题的函数:
string getString()
{
string wordInput;
cout << "Enter a word that has AT LEAST four (4) letters! ";
getl