我是Haskell的新手,我在使用randomRIO函数的IO Int时遇到了问题.我的目标是获得一个随机的Int值,比如r,如果r <x则返回True,否则返回false,但我不知道该怎么做.
我的功能应该是这样的:
randomCompare :: Int->Bool
randomCompare x
| x < r = True -- somehow i want to r <- randomRIO(start,end)
| otherwise = False
Run Code Online (Sandbox Code Playgroud)
我知道有一个设计意图,保持IO值在上下文中纯度等.但我不明白为什么使用布尔函数的随机数应该是"坏".
谢谢.
以下是我的示例代码
在foo()需要使用标准c库exit()来终止进程的成员函数中,但int CFoo::exit(void)在编译时它与成员函数有不明确的命名错误.
无论如何可以避免这个问题?
#include <stdlib.h>
#include <stdio.h>
class CFoo
{
public:
void foo(void)
{
exit(0); // needs to use standard libc to exit process
}
void exit(void)
{
printf("exit\n");
}
};
int main()
{
CFoo obj;
obj.foo();
}
Run Code Online (Sandbox Code Playgroud) 我是新用的cabal,我需要我的包包含一个小的可执行文件以及整个库.是否可以这样做(导出可执行文件和库)或者cabal包是否具有type(可执行的OR二进制文件).是否也可以在同一个packagke中导出许多可执行文件?
我知道如果函数需要将格式字符串传递到 vsnprintf 中,您可以避免出现__attribute__((__format__ (__printf__, 2, 0)))“格式字符串不是字符串文字”的 clang 警告。但是在我的例子中,格式字符串被保存为一个用文字初始化的字段。像这样的东西:
class Worker {
const char* format;
Worker(const char* f): format(f) {...}
void go() {
...
vsnprintf(..,..,format,..);
...
}
}
Run Code Online (Sandbox Code Playgroud)
我怎样才能避免警告?
我正在构建一个用于从 Python 访问 Objective-C 的库。我一直在获取 iOS 上变量的地址。
假设我想获取以下指针地址CBCentralManagerScanOptionAllowDuplicatesKey:
NSString *key = CBCentralManagerScanOptionAllowDuplicatesKey;
NSLog(@"Address is: %p\n", key);
NSString *key2 = dlsym(RTLD_SELF, "CBCentralManagerScanOptionAllowDuplicatesKey");
NSLog(@"Address2 is: %p\n", key2);
Run Code Online (Sandbox Code Playgroud)
我有:
Address is: 0x3a827fcc
Address2 is: 0x3a825514
Run Code Online (Sandbox Code Playgroud)
为什么我会得到不同的值?我尝试查找RTLD_NEXT,仍然得到相同的值。Objective-C 变量是否以某种方式被破坏了?
strstr声明:
char *strstr(const char *haystack, const char *needle);
我的功能定义:
hostinfo_t *extract_host_from_url(const char *url) {
/* ... */
char *scheme_pos = strstr(url, "://");
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
我怎么用它:
void rewrite_url(string &url) {
/* ... */
hostinfo_t * hostinfo = extract_host_from_url(url.c_str());
/* ... */
}
Run Code Online (Sandbox Code Playgroud)
错误信息:
错误:从'const char*'到'char*'的无效转换[-fpermissive]
char*scheme_pos = strstr(url,"://");
哪里出错了?
我有我的类型,在这里定义:
data Nat = Zero | Succ Nat deriving Show
我想要定义函数,将 Nat 转换为 Int。请帮助
我所有的尝试都是这样的:
toInt :: Nat -> Int
toInt n = show n :: Int
Run Code Online (Sandbox Code Playgroud)
并没有给出结果