我尝试定义一个函数,在给定N <: Nat
类型参数的情况下,构建一个恰好有3 N
的列表。
import shapeless._
import shapeless.nat._
scala> def natNOfSize3[N <: Nat](n: Nat): Sized[List[N], _3] =
Sized[List, _3](List(n, n, n))
<console>:17: error: wrong number of type parameters for overloaded method value apply with alternatives:
[CC[_]]()(implicit cbf: scala.collection.generic.CanBuildFrom[Nothing,Nothing,CC[Nothing]], implicit ev: shapeless.AdditiveCollection[CC[Nothing]])shapeless.Sized[CC[Nothing],shapeless._0] <and>
[CC[_]]=> shapeless.SizedBuilder[CC]
def natNOfSize3[N <: Nat](n: Nat): Sized[List[N], _3] = Sized[List, _3](List(n, n, n)) ^
但我不明白为什么会失败。
答案 0 :(得分:2)
一个问题是,您header('Content-Type: application/json');
$search_artist = rawurlencode($_POST['search_artist']);
$search_title = rawurlencode($_POST['search_title']);
if($search_artist && !$search_title) {
//Search for Artist only
$url = "https://api.spotify.com/v1/search?q=*".$search_artist."*&type=artist";
} else if(!$search_artist && $search_title) {
//Search for title only
$url = "https://api.spotify.com/v1/search?q=*".$search_title."*&type=track";
} else if($search_artist && $search_title) {
//Search for Artist AND Title
$url = "https://api.spotify.com/v1/search?q=*".$search_artist."*&type=artist&q=*".$search_title."*&type=track";
}
$contents = file_get_contents($url);
echo json_encode($contents);
的输入是n
,而不是Nat
- 我认为这只是一个错字。一旦你解决了这个问题,就可以编写如下方法:
N
请注意,import shapeless._, nat._
def natNOfSize3[N <: Nat](n: N): Sized[List[N], _3] = Sized[List](n, n, n)
采用类型Sized.apply
的单一类型参数,而不是提供集合,而是提供元素。
如果您确实要传递集合,可以使用* -> *
:
wrap
但是如果你对元素的数量感到不满,那么编译器就无法帮助你了。