我想首先说是的,我来这里之前谷歌已经解决了这个问题,但没有一个答案似乎有用.
我偷了下面的代码,什么是修剪std :: string的最佳方法?,因为无论什么原因,没有标准的c ++ trim函数.使用Visual Studio,它编译得很好,我设法完成项目的其余部分,而不会给我任何错误.
今天早上,我决定尝试手动编译整个项目(使用g++ -std=c++11 *.cpp),现在突然出现这些trim函数产生以下错误:
DVD.cpp: In static member function 'static DVD DVD::parseDVD(std::string, std::string)':
DVD.cpp:65:59: error: invalid initialization of non-const reference of type 'std::string& {aka std::basic_string<char>&}
from an rvalue of type 'std::basic_string<char>'
std::string rID = trim(dataStr.substr(0, preTitlePos - 1));
Run Code Online (Sandbox Code Playgroud)
对于使用的其他2次,它产生类似的错误trim.
这是"被盗"的代码:
(Utils.h):
static inline std::string& ltrim(std::string& s) {
s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun<int, int>(std::isspace))));
return s;
}
// trim from end
static inline std::string& rtrim(std::string& s) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Intellij's Cursive 中的 Leiningen 插件从我的基本 Clojure 项目中制作一个独立的 jar。
为了创建项目,我只是创建了 project.clj 文件,将其打开,然后 Cursive 提出将其作为项目导入。
项目.clj:
(defproject WaterTimer "1"
:description "A timer that reminds you to drink water"
:main tone-producer/main)
Run Code Online (Sandbox Code Playgroud)
音调producer.clj:
(ns tone-producer
(:require [general-helpers :as g])
(:import [javax.sound.midi MidiSystem
Synthesizer
MidiChannel])
(:gen-class))
(defn main [& args]
(println "Test!"))
Run Code Online (Sandbox Code Playgroud)
当我运行“uberjar”任务时,我得到以下输出:
警告:指定 :main 而不将其包含在 :aot 中。:main 的隐式 AOT 将在 Leiningen 3.0.0 中删除。如果您的 uberjar 只需要 AOT,请考虑将 :aot :all 添加到您的 :uberjar 配置文件中。警告:jar 中不存在指定的 Main-Class。它可能无法按预期执行。包含 main 方法的命名空间中可能缺少 gen-class 指令。创建 C:\Users\slomi\IdeaProjects\WaterTimer\target\WaterTimer-1.jar 创建 C:\Users\slomi\IdeaProjects\WaterTimer\target\WaterTimer-1-standalone.jar
我还尝试将main函数更改为具有默认名称,并从以下名称中省略名称 …
我使用 IntelliJ + Cursive。
我正在对我正在编写的遗传算法进行一些测试,并获得了 NPE。不清楚它来自哪里,所以我启动了我的调试器。然而,当它启动时,一个RuntimeException中断被激活,它指向这里clojure.main:
(defn main
[& args]
(try
(if args
(loop [[opt arg & more :as args] args inits []]
(if (init-dispatch opt)
(recur more (conj inits [opt arg]))
((main-dispatch opt) args inits))) ; <---- Points Here
(repl-opt nil nil))
(finally
(flush))))
Run Code Online (Sandbox Code Playgroud)
异常内容如下:
Exception in thread "main" java.lang.RuntimeException: Unable to resolve symbol: create in this context, compiling:(C:\Users\slomi\AppData\Local\Temp\form-init2101329611502965041.clj:4223:33
Run Code Online (Sandbox Code Playgroud)
我create在它指向的代码中的任何地方都没有看到符号(这会很奇怪,因为它是clojure.main),我检查了我的整个项目,并且没有在任何地方使用该符号。我检查了异常指向的路径,发现这个乱七八糟的:
(.deleteOnExit (java.io.File. "C:\\Users\\slomi\\AppData\\Local\\Temp\\form-init2101329611502965041.clj")) (do (set! *warn-on-reflection* nil) (do (try (clojure.core/doto (quote …Run Code Online (Sandbox Code Playgroud) 有人可以解释为什么(int) (Math.random()*12-3)返回介于-2和8 (int) (Math.random()*12)-3之间的值,而返回介于-3和8之间?
不同之处在于括号的位置,但我不知道为什么它会产生影响的"引擎盖下".如果Math.random()可以返回的最低值为0,那么0*12 = 0并且两者最终都应该以-3结尾.我认为它与铸造到int和0.x到1有关.它只是(理论上)不可能达到0.00000000 ......?
我正在写自己的range实现ISeq.我最初的实现equiv只是调用seq我的范围和另一个列表,并使用=以下方法进行比较:
(defn equals? [this-range other-range]
(= (seq this-range) (seq other-range)))
Run Code Online (Sandbox Code Playgroud)
这似乎很好,但后来我遇到了一些奇怪的行为:
(= (new-range 5 10)
(range 5 10))
=> true
(= (range 5 10)
(new-range 5 10))
=> false ; Uh oh
Run Code Online (Sandbox Code Playgroud)
new-range我的自定义构造函数在哪里.
为了了解LongRange句柄的等效性,我检查了它的来源.它代表们ASeq,和ASeq的equiv方法开始与线:
public boolean equiv(Object obj) {
if (!(obj instanceof Sequential) && !(obj instanceof List)) {
return false;
. . .
Run Code Online (Sandbox Code Playgroud)
由于我的范围没有实现,Sequential或者List此检查失败.它甚至没有尝试迭代我的范围来进行值比较.
这是什么原因?Sequential只是一个空的界面.似乎只是存在将类"标记"为顺序而不需要任何方法. …
有一种涉及子分类的情况我无法弄清楚。
我正在进行子分类Random(原因超出了重点)。这是我所拥有的一个基本示例:
import random
class MyRandom(random.Random):
def __init__(self, x): # x isn't used here, but it's necessary to show the problem.
print("Before")
super().__init__() # Nothing passed to parent
print("After")
MyRandom([])
Run Code Online (Sandbox Code Playgroud)
上面的代码在运行时给出以下错误(并且不打印“Before”):
>>> import test
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Users\_\PycharmProjects\first\test.py", line 11, in <module>
MyRandom([])
TypeError: unhashable type: 'list'
Run Code Online (Sandbox Code Playgroud)
对我来说,这没有任何意义。不知何故,即使我没有传递它,参数MyRandom显然也被直接传递给Random.__init__,并且该列表被视为种子。"Before"从不打印,所以显然我的初始化器甚至从未被调用。
我认为这可能是由于Random在 C 中实现的父级造成的,这导致了奇怪的情况,但是list子类化的类似情况不会产生错误,指出整数不可迭代:
class MyList(list):
def __init__(self, y):
print("Before")
super().__init__()
print("After") …Run Code Online (Sandbox Code Playgroud) 我有了定义一个运算符的想法,该运算符采用(可能)多维列表和索引列表,并返回该元素.我的原型尝试是:
(!!!) xs [i] = xs !! i
(!!!) xs (cI : restI) = (xs !! cI) !!! restI
Run Code Online (Sandbox Code Playgroud)
回想起来,这显然有很多问题.我首先想不出类型签名,然后我意识到在第2行,(xs !! cI)的返回类型将不断变化,并且可能并不总是一个列表(在最后一次"迭代"中)
我意识到要使用标准的下标运算符访问多维数组,您可以简单地将其链接为:
[[1,2,3],[4,5,6],[7,8,9]] !! 1 !! 1 = 5
Run Code Online (Sandbox Code Playgroud)
并意识到这看起来很像折叠,所以我试过:
(!!!) xxs inds = foldl (!!) xxs inds
or simply (!!!) = foldl (!!)
Run Code Online (Sandbox Code Playgroud)
但是我得到的错误与我的第一次尝试相同; 我正在尝试构建一个无限类型.
这种类型的功能是否可行(通过黑客或其他方式)?我开始认为它的类型太空中了.
举个例子,我的目标是:
[[1,2,3],[4,5,6],[7,8,9]] !!! [1,1] = 5
Run Code Online (Sandbox Code Playgroud) 我正在试图弄清楚Haskell的Control.Parallel模块,我写了以下内容(tMap是时间比较的基础案例):
import Control.Parallel
paraMap, tMap :: (a -> b) -> [a] -> [b]
paraMap _ [] = []
paraMap f [x] = [f x]
paraMap f (x : xs@(y : ys)) = (f y `par` f x) : paraMap f xs
tMap _ [] = []
tMap f (x : xs) = f x : tMap f xs
Run Code Online (Sandbox Code Playgroud)
想法是paraMap将在完成当前元素之前开始计算下一个元素.我的测试显示它的性能比tMap差.我猜这是因为par引入了更多的开销,并且因为我没有正确使用它,所以它没有产生足够的收益来克服成本.
我上面的例子有什么问题?据我了解,x 'par' y基本上意味着"我需要x以后,所以并行计算它,但y现在返回"(类似于seq如何工作,但体现在一个spark,它允许它在一个单独的线程上计算的机会).
我唯一能想到的是,它被混淆了,因为我需要在函数的单独实例中的下一个元素(递归).我想我可以paraMap围绕实际的递归创建一个包装器,并明确地将下一个par'd元素传递给下一个递归; 但这看起来很笨拙.
我尝试通过编译它:! ghc -o -threaded <fileName> …
我想在sympy表达的输出设定2**3 * 2**4 =,以 2**7代替128.有一个简单的方法吗?
我有以下graphQL结果:
[仅{详细信息=仅“ 33秒引擎故障和车辆丢失”,launch_year =仅“ 2006”,链接=仅{article_link =仅“ https://www.space.com/2196-spacex-inaugural-falcon -1-rocket-lost-launch.html “},mission_name = Just” FalconSat“}]
基于以下类型:
type alias Launch =
{ mission_name : Maybe String
, details : Maybe String
, launch_year : Maybe String
, links : Maybe LaunchLinks
}
type alias Launches =
Maybe (List (Maybe Launch))
type alias LaunchLinks =
{ article_link : Maybe String
}
Run Code Online (Sandbox Code Playgroud)
我想通过List.map并将结果显示在无序列表中。我从这个开始:
renderLaunch : Launches -> Html Msg
renderLaunch launches =
div [] <|
case launches of
Nothing ->
[ text "Nothing here" ]
Just …Run Code Online (Sandbox Code Playgroud)