Soy nuevo e ingenuo para scala. Simplemente sepa cómo definir un tipo de función como Establecer aquí (solo como un ejemplo).¿Cómo usar el tipo de función en scala dentro de definido en tipo significativamente?
type Set = Int => Boolean
def set(i: Int): Set = n => n == i
def contains(s: Set, i: Int) = s(i)
También leí la wiki de tipo de función de agnóstico de idioma. Parece que C#, C, Haskel también tienen la gramática similar. http://en.wikipedia.org/wiki/Function_type.
Mi pregunta es en cuyo caso prefiere definir uno de este tipo de función de tipo abstracto y usarlo, ¿Y no hay otra opción para alcanzar el mismo objetivo? Comparando para definir directamente un método concreto usando def
O puedo perder el requisito, decir usando este tipo de función, puedo hacer que el código se vea mucho mejor. Para que pueda saber más sobre el tipo de función.
Aquí mi principal parte interesada es type Set = Int => Boolean
, cuando quiere abstraerlo? Estoy buscando un caso de uso de la vida real, y cómo implementarlo en un método concreto en scala grammer. Por ejemplo, este es un poco complejo.
type Set2 = (Int,Int,String) => (Boolean => Int) => (Boolean => Int).
Sé que se llama tipos de mayor nivel. La gramática en sí misma es significativa. Pero solo necesito ejemplos más simples de la vida real para los principiantes de Scala.
Encontré esta respuesta describiendo para ello. What is a higher kinded type in Scala?
Pero todavía se ve un poco oscuro para mí. Prefiero una respuesta simple para principiantes. Parece que la función en sí misma no requirió nada excepto el parámetro y el tipo de resultado para la implementación mentoda. Por ejemplo, si el resultado (booleano) no proviene del parámetro (Int), aún se compila.
def set(i: Int): Set1 = aa => new Date().getDate() == i
Am I lostanding it right?
¡Avísame por qué esta pregunta no es clara o mala, así que puedo mejorarla, señor!
Tu gramática es intrincada y la selección de palabras es extraña o sencilla. Por ejemplo '¿hay alguna necesidad especial que prefiera definir? No tiene mucho sentido, y' necesidad 'probablemente debería haber sido' requisito '. Otros ejemplos son 'ingenuo' en la parte superior y' objetivo' (objetivo) en la única pregunta que haces. Ese es el otro problema aquí: una pregunta debería ser una pregunta. Termina en '?', Y se establece como una pregunta. Aquí, la pregunta está en el medio del texto, el medio incluso de un párrafo. No te he rechazado, pero no estás siendo claro. –
@ Daniel, he actualizado la pregunta. Eres libre de corregir la palabra y la gramática incorrectas y todo lo que quieras corregir. –
@ Daniel, En realidad, no tengo claro cómo usar este tipo de función en el estuche correcto. Tal como el tipo Set2 = (Int, Int, String) => (Boolean => Int). Puede ser aún más complicado. –