2016-10-14 3 views
0

이 패키지로 Julia를 사용하는 방법을 이해하려고합니다. 다음 코드를 사용일치하는 방법으로 HttpServer 및 Julia 오류가 발생했습니다.

임 (패키지에서 예입니다) :

using HttpServer 

function fibonacci(n) 
    if n == 1 return 1 end 
    if n == 2 return 1 end 
    prev = BigInt(1) 
    pprev = BigInt(1) 
    for i=3:n 
    curr = prev + pprev 
    pprev = prev 
    prev = curr 
    end 
    return prev 
end 

http = HttpHandler() do req::Request, res::Response 
    m = match(r"^/fibo/(\d+)/?$",req.resource) 
    if m == nothing 
     return Response(404) 
    end 
    number = BigInt(m.captures[1]) 
    if number < 1 || number > 100_000 
     return Response(500) 
    end 
    return Response(string(fibonacci(number))) 
end 

http.events["error"] = (client, err) -> println(err) 
http.events["listen"] = (port)  -> println("Listening on $port...") 

server = Server(http) 
run(server, 8031) 

그리고이 링크 서버에 액세스하려고 :

http://localhost:8031/fibo/100

하지만 난 다음 오류가 발생합니다 :

MethodError(convert,(BigInt,"100"))

ERROR: MethodError: Cannot convert an object of type SubString{String} to an object of type BigInt

무엇이 잘못 되었습니까?

나는 어쩌면 방법 BigInt(s::AbstractString)는 사용되지 않으며 줄리아 0.5에서 제거했습니다 때문에이 오류가

답변

1

내 문제는 ...이, r"^/fibo/(\d+)/?가 무엇을 파악하는 문제가있다. 대신 number = parse(BigInt,m.captures[1])을 사용하십시오.

+0

근무했습니다. 감사! – exsnake

관련 문제