小编Kev*_*ith的帖子

function返回指向int的指针

当调用add(4)时,我的main()在下面崩溃.

据我所知int*add,它应该返回一个指向整数的指针.然后,我应该能够主要说:

int*a = add(3);

返回指向int的指针.

请解释我做错了什么.

#include <cstdlib>
#include <iostream>

using namespace std;

int* add (int a) {
   int * c, d;
   d = a + 1;
   *c = d;
   cout << "c = " << c << endl; 
   return c;
}

int main(int argc, char *argv[])
{
    int a = 4;

    int * c;

    c = add(4); 

    system("PAUSE");
    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

c++ pointers

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

Linux - 环境变量$ HOME与$(HOME)

最近我不得不更新我的JAVA环境变量 .bashrc

echo $ JAVA_HOME#打印出/ usr/java/...

echo $(JAVA_HOME)#引发错误"找不到JAVA_HOME命令"

我担心我的make文件使用后$(JAVA_HOME)$JAVA_HOME被识别,但不会被识别$(JAVA_HOME)

我怎样才能达到目前设定的$(JAVA_HOME)平等$JAVA_HOME?另外,为什么会这样呢?

谢谢

linux environment-variables

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

Scala中的Currying示例

以下是currying的一个很好的例子吗?

def sum(a: Int, b: Int) : (Int => Int) = {
    def go(a: Int) : Int = {
        a + b;
    }
    go
}
Run Code Online (Sandbox Code Playgroud)

我一半了解下面的结果,但我怎么能用sum()咖喱的方式写(或者我应该怎么写)呢?

scala> sum(3,4) res0: Int => Int = <function1>
scala> sum(3,4).apply(2) res1: Int = 6
scala> sum(3,4).apply(3) res2: Int = 7
Run Code Online (Sandbox Code Playgroud)

scala currying

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

Haskell中的类型安全`read`

了解Haskell讨论以下数据类型:

data Day = Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday   
           deriving (Eq, Ord, Show, Read, Bounded, Enum)  
Run Code Online (Sandbox Code Playgroud)

该书演示了如何使用readString将字符串解析为Day类型.

$ read "Saturday" :: Day
Saturday
Run Code Online (Sandbox Code Playgroud)

但是,我可以传入非Day值,从而导致异常.

$ read "foo" :: Day
*** Exception: Prelude.read: no parse
Run Code Online (Sandbox Code Playgroud)

read在上面的例子中,什么是类型安全的方法?

haskell

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

在 Angular + Scala Play 上启用 CORS

使用 AngularJS 1.2.16 和 Scala Play 2.2.0,我正在尝试启用 CORS。

这是我在前端的请求。基本上它是一个POST发送带有userNamepassword字段的JSON 。

Request URL:http://localhost:9000/login
Request Headers CAUTION: Provisional headers are shown.
Accept:application/json, text/plain, */*
Content-Type:application/json;charset=UTF-8
Origin:http://localhost:8000
Referer:http://localhost:8000/app.html
User-Agent:Mozilla/5.0 ...
Request Payloadview source
  {userName:foo, password:bar}
Run Code Online (Sandbox Code Playgroud)

checkPreFlight是允许我的POST请求标头的后端方法。

  def checkPreFlight = Action {
    Ok("...").withHeaders(
      ACCESS_CONTROL_ALLOW_ORIGIN -> "*",
      ACCESS_CONTROL_ALLOW_METHODS -> "POST",
      ACCESS_CONTROL_MAX_AGE -> "300",
      ACCESS_CONTROL_ALLOW_HEADERS -> "Origin, X-Requested-With, Content-Type, Accept,
                                         Referer, User-Agent")
  }
Run Code Online (Sandbox Code Playgroud)

routes

POST    /login                      controllers.Home.login
OPTIONS /login                      controllers.Home.checkPreFlight
Run Code Online (Sandbox Code Playgroud)

我的 Chrome 浏览器的控制台显示:

XMLHttpRequest cannot …
Run Code Online (Sandbox Code Playgroud)

firefox scala google-chrome playframework-2.0 angularjs

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

'for-comprension'中元组值的模式匹配?

鉴于:

scala> val x: Either[Boolean, (Int, Int)] = Right( (5, 10) )
x: Either[Boolean,(Int, Int)] = Right((5,10))
Run Code Online (Sandbox Code Playgroud)

我想在第一个和第二个元组值上进行模式匹配x.right,但这不起作用:

scala> for { 
     |   (a, b) <- x.right
         | } yield a

<console>:14: error: constructor cannot be instantiated to expected type;
 found   : (T1, T2)
 required: scala.util.Either[Nothing,(Int, Int)]
         (a, b) <- x.right
         ^
Run Code Online (Sandbox Code Playgroud)

我可以这样做:

scala> for { a <- x.right } yield a match { case (x, y) => x }
res5: scala.util.Either[Boolean,Int] = Right(5)
Run Code Online (Sandbox Code Playgroud)

但是,有什么方法可以让我改变我的第一个非编译代码吗?

scala

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

(xs:Vect n elem) - > Vect(n*2)elem

" 使用Idris进行类型驱动开发 "一书介绍了此练习:

定义适合签名的可能方法:

two : (xs : Vect n elem) -> Vect (n * 2) elem

我试过了:

two : (xs : Vect n elem) -> Vect (n * 2) elem
two xs = xs ++ xs
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

*One> :r
Type checking ./One.idr
One.idr:9:5:When checking right hand side of two:
Type mismatch between
        Vect (n + n) elem (Type of xs ++ xs)
and
        Vect (mult n 2) elem (Expected type)

Specifically:
        Type mismatch between
                plus n n
        and
                mult …
Run Code Online (Sandbox Code Playgroud)

idris

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

利用Idris建模开关门状态机

在ScalaWorld 2015上,Edwin Brady在Idris上发表了精彩的演讲 - https://www.youtube.com/watch?v=X36ye-1x_HQ.

在其中一个例子中,我记得他展示了如何使用Idris编写代表有限状态机(FSM)的程序 - 用于打开和关闭门.他的FSM可能有点复杂,但是,考虑到以下状态:

data DoorState = DOpen | DClosed

data DoorAction = Open | Close
Run Code Online (Sandbox Code Playgroud)

我写了一个函数,给定一个DoorActionDoorState,返回新的DoorState.

runDoorOp : DoorAction -> DoorState -> DoorState
runDoorOp Close DOpen  = DClosed
runDoorOp Open DClosed = DOpen
Run Code Online (Sandbox Code Playgroud)

但是,上面的功能是局部的,例如:runDoorOp Open DOpen会崩溃.

我想过使用EitherMaybe数据类型,但我认为(从听到这个话题)可以在没有类型安全的情况下对这个FSM进行编码Either/Maybe.

什么是惯用的,Idris方式使用路径依赖类型编写上述函数,而不使用Maybe/Either

state-machine idris

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

了解ScalaChecks的"生成大小"

ScalaCheck的GenAPI 文档解释lazy val sized:

def size [T](f:(Int)⇒Gen[T]):Gen [T]

创建可以访问其生成大小的生成器

看下面的例子:

import org.scalacheck.Gen.{sized, posNum}

scala> sized( s => { println(s); posNum[Int] })
res12: org.scalacheck.Gen[Int] = org.scalacheck.Gen$$anon$3@6a071cc0

scala> res12.sample
100
res13: Option[Int] = Some(12)

scala> res12.sample
100
res14: Option[Int] = Some(40)
Run Code Online (Sandbox Code Playgroud)

是什么意思generation size,即上述输出中的100?

scala scalacheck

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

理解`括号'功能

查看Haskell中并行和并发编程bracket功能:

bracket :: IO a -> (a -> IO b) -> (a -> IO c) -> IO c
bracket before after during = do
  a <- before
  c <- during a `onException` after a
  after a
  return c
Run Code Online (Sandbox Code Playgroud)

如果发生异常,为什么after函数只被调用一次?换句话说,after a如果发生异常,我会对两次明显的执行感到困惑.

但是,代码显示,after a只有在我理解的情况下,才会调用:

?: >data MyException = MyException deriving Show
?: >instance Exception MyException

?: >let e = return MyException :: IO MyException

?: >bracket e (const $ putStrLn "clean up!") …
Run Code Online (Sandbox Code Playgroud)

haskell

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