[clojure] Varios juicios de parámetros de cljs

1. Limite el valor pasado al tipo numérico.

En Clojure, no hay restricciones de tipo para pasar parámetros porque Clojure es un lenguaje de tipo dinámico. Esto significa que puede pasar cualquier tipo de valor como parámetro.
Si desea limitar el tipo de parámetro a un tipo numérico, puede usar una función dentro de la función number?para verificar el tipo de parámetro

(defn my-func [x]
  (if (number? x)
    (println "参数是一个数字")
    (println "参数不是一个数字")))

(my-func 10) ; 输出:参数是一个数字
(my-func "hello") ; 输出:参数不是一个数字

2. Determinar si varios valores pasados ​​no están vacíos

Utilice if o whenpara determinar si varios valores están vacíos y realice las operaciones correspondientes

(defn my-func [x y z]
  (if (and (not (empty? x))
           (not (empty? y))
           (not (empty? z)))
    (do
      (println "调用方法的函数"))
    (println "传值为空,请提供有效的参数")))

(my-func "a" "b" "c") ; 输出:调用方法的函数
(my-func "a" "" "c") ; 输出:传值为空,请提供有效的参数

La función my-func acepta tres parámetros x, y y z. Utilice y para comprobar si tres parámetros están vacíos al mismo tiempo. Si los tres parámetros no están vacíos, dose ejecutará el contenido del bloque de código, es decir, la función que llama al método. De lo contrario, aparecerá el mensaje "El valor pasado está vacío, proporcione parámetros válidos".

Tenga en cuenta que aquí se utiliza una función empty? para determinar si el parámetro está vacío. empty? Las funciones pueden comprobar si cadenas, listas, vectores, conjuntos, etc. están vacíos.
Si necesita determinar si el valor de otros tipos está vacío, puede usar la función correspondiente, por ejemplo nil? , para determinar si es nulo.

3. Método para determinar si una variable es verdadera

Utilice true?una función para determinar si una variable es verdadera. true?La función acepta un parámetro y devuelve trueo false, si el parámetro es verdadero, devuelve verdadero; de lo contrario, devuelve falso.

(true? true) ; 返回 true
(true? false) ; 返回 false

(def x 10)
(true? x) ; 返回 true,因为 x 的值不是 nil 或 false

(def y nil)
(true? y) ; 返回 false,因为 y 的值是 nil

Nota: true?La función solo puede determinar si el parámetro es verdadero y no puede determinar si otros valores son verdaderos, como cadenas que no están vacías o números distintos de cero. Si necesita determinar si otros valores son verdaderos, puede utilizar notuna función o somefunción para realizar la determinación.

3. Utilice seq para determinar si varios valores pasados ​​por el usuario están vacíos.

En Clojure, puede utilizar seqfunciones para determinar si varios valores son nulos. seqLa función puede convertir un conjunto en una secuencia (secuencia), si el conjunto está vacío, devuelve nil, de lo contrario, devuelve una secuencia no vacía.

(defn my-func [x y z]
  (if (seq [x y z])
    (do
      (println "调用方法的函数"))
    (println "传值为空,请提供有效的参数")))

(my-func "a" "b" "c") ; 输出:调用方法的函数
(my-func "a" "" "c") ; 输出:传值为空,请提供有效的参数

Nota: seqLa función solo puede determinar si el conjunto está vacío

4. Bucle de verificación para determinar si el valor está vacío

(defn process-values [values]
  (if (empty? values)
    (println "所有值都已处理完毕")
    (let [first-value (first values)]
      (if (empty? first-value)
        (do
          (println "值为空,请提供有效的参数")
          (recur (rest values)))
        (do
          (println "处理值:" first-value)
          (recur (rest values))))))

(process-values ["a" "b" "c"]) ; 输出:处理值: a,处理值: b,处理值: c,所有值都已处理完毕
(process-values ["a" "" "c"]) ; 输出:处理值: a,值为空,请提供有效的参数,处理值: c,所有值都已处理完毕

En el ejemplo anterior, process-valuesla función acepta un valuesparámetro llamado , que es una colección (como un vector) que contiene múltiples valores. La función primero verifica valuessi está vacío y, si está vacío, aparece el mensaje "Todos los valores han sido procesados". De lo contrario, use firsla función t para obtener valueel primer valor en sy determinar si está vacío. Si está vacío, aparece el mensaje "El valor está vacío, proporcione parámetros válidos" y se utiliza recurla función.recursividadLlame process-valuesa la función para manejar el siguiente valor. Si no está vacío, genere "valor de proceso:" más el valor actual y use recurla función para llamar recursivamente process-valuea la función s para procesar el siguiente valor.

5. Operación de negación

Utilice notuna función para negar un valor booleano.

(defn negate-value [value]
  (if (not value)
    (println "值为真")
    (println "值为假")))

(negate-value true) ; 输出:值为假
(negate-value false) ; 输出:值为真

La función de valor negativo acepta un parámetro denominado valor y utiliza la función not para negar el valor. Si el valor es verdadero, genera "el valor es falso", de lo contrario genera "el valor es verdadero"

6. Encuentre si existe una clave en el mapa.

Utilice contains?una función para comprobar si existe una clave especificada en una matriz asociativa (mapa)

;;(contains? map key)
(def my-map {
    
    :a 1 :b 2 :c 3})

(if (contains? my-map :a)
  (println "Key :a exists in the map")
  (println "Key :a does not exist in the map"))

(if (contains? my-map :d)
  (println "Key :d exists in the map")
  (println "Key :d does not exist in the map"))

Se crea una matriz asociativa my-map, que contiene las claves: a, :b y :c. Luego usamos la función contiene? para verificar si las claves :a y :d existen en my-map

7.Uso del método doall

doallLas funciones se utilizan para forzar la evaluación y consumir una secuencia. Lo que hace es asegurar que cada elemento de la secuencia sea evaluado, incluso si no usas o ignoras el resultado de la secuencia.
doallLa función se usa así:

(doall coll)

colles una secuencia de valores requeridos.

(def my-seq (range 10)) ; 创建一个序列

(def result (doall (map inc my-seq))) ; 对序列中的每个元素加1,并使用doall强制求值

(println result) ; 打印结果

En el ejemplo anterior, creamos una secuencia my-seq que contiene los elementos del 0 al 9. Luego usamos mapla función y la función inc para sumar 1 a cada elemento de la secuencia. Sin embargo, dado que mapse evalúa de forma perezosa, no evalúa la secuencia de inmediato. Para garantizar que se evalúen todos los elementos, utilizamos doalluna función para almacenar su resultado en formato result. Finalmente, imprimimos resultel valor.

Tenga en cuenta que doallla función obliga a evaluar toda la secuencia, lo que puede causar problemas de rendimiento, especialmente cuando la secuencia es muy grande. Por lo tanto, sólo utilice la función doall si realmente necesita evaluar la secuencia completa.

8. Escribe toda la información obtenida en la cartulina.

js/document.execCommandmétodo

(defn write-to-clipboard [text]
  (let [temp-textarea (.createElement js/document "textarea")]
    (.setAttribute temp-textarea "readonly" "")
    (set! (.-value temp-textarea) text)
    (.appendChild js/document.body temp-textarea)
    (.select temp-textarea)
    (.execCommand js/document "copy")
    (.removeChild js/document.body temp-textarea)))

;; 调用示例
(write-to-clipboard "这是要写入粘贴板的信息")

Supongo que te gusta

Origin blog.csdn.net/liqiannan8023/article/details/132823853
Recomendado
Clasificación